发现问题
在平常开发过程中,要做一个细心的人,不轻易放过任何一个问题。
这次发现Freeswitch的内存泄漏,是因为经常有关注测试环境的Freeswitch内存占用。
发现在测试环境升级的第二天Freeswitch内存就升到了200-300M,非常异常!
观察问题
使用脚本定时统计Freeswitch的内存占用,同时打开Freeswitch的调试开关。
export TPORT_DUMP=/usr/local/freeswitch/log/tport_sip.log
输出Freeswitch收到和发出信令包的日志。
通过观察发现,Freeswitch内存占用升高时,大部分是发起了视频通话
复现问题
通过sipp工具,在开发环境做视频通话的性能压测,发现100个视频通话后,Freeswitch内存占用就到了200多M,妥妥的是内存泄漏了
/usr/local/cloud_monitor/sipp/sipp_3.5.1 -t t1 -m 10 -i 172.18.41.220 -sf test/reg_tcp.xml -inf test/uas1.csv -p 6168 39.108.105.163:5070 -trace_err -trace_screen -timeout 60
/usr/local/cloud_monitor/sipp/sipp_3.5.1 -t t1 -aa -i 172.18.41.220 -sf test/video_pcmuuas.xml -inf test/uas1.csv -p 6168 39.108.105.163:5070 39.108.105.163:5070 -trace_err -trace_screen -timeout

在开发中,通过监控发现Freeswitch内存异常升高,尤其是在视频通话后。通过脚本和调试日志定位问题,使用sipp工具进行性能压测,确认了内存泄漏的存在。进一步分析发现,AKCS_ENABLE_RTP_CONFUSE宏的启用导致了内存泄漏,原因是通话结束时未正确解锁session。解决方案是确保每次通话后都解锁session,从而修复了内存泄漏问题。
最低0.47元/天 解锁文章
2498

被折叠的 条评论
为什么被折叠?



