Kamailio踩坑记

分享几次踩坑/爬坑历史

  • 有一批sip终端用tcp注册到kamailio,最开始很正常,但随着终端数量的逐渐增加,部分终端需要很久才能成功注册

第一步想到的是在kamailio上抓包,发现确实是kamailio close了tcp连接

第二步是把全局参数debug修改成3(默认是2),等问题复现后收集日志,跟源码对比这才发现是一个全局参数没设置好,tcp_max_connections默认是2048,当时终端数量大约是2100,把tcp_max_connections调整成5万后就正常了(预期数就是5万)

当时我研究kamailio时间不长,从发现问题到解决问题,花了4小时左右,表现基本及格

  • 过不多久又碰到一个问题,kamailio registrar 支持 muti contact,客户需要实现一个功能:如果有一个终端回了486,那么就需要把其它正在振铃的终端打死

我当时已经读过kamailio的很多文档,尽管还不熟,但已经有了branch的概念,这个需求肯定跟branch有关,于是我加载app_lua.so,kamcmd app_lua.api_list > /tmp/api.txt,然后在api.txt里面找branch,结果找到了,tmx模块有t_cancel_branches函数

  • 又碰到了一个新问题,FreeSWITCH透过kamailio呼叫终端,跟通常的做法稍微不同的是,被叫是组名称,kamailio路由脚本需要据此查数据库,再创建branch。最开始没多想,试了试,发现不对,有一个branch指向了FreeSWITCH

肯定是branch没理解透,后来在github找到对应的工单,完美解决了,工单地址是:

https://github.com/kamailio/kamailio/issues/72
miconda解释的非常清楚

后来踩的坑越来越多,好像不再怕kamailio了

你可能感兴趣的:(Kamailio,kamailio,issue)