问题描述
稳定运行几个月的外呼系统, 最近突然开始卡顿, 不仅在高并发的时候卡顿, 在没有并发的情况下,同样卡顿。
在排除了系统本身的问题后, 怀疑是网络问题, 下面是定位的一些步骤。
定位方法
- 在外网搭建一台freeswitch,用于模拟线路服务器
- 当前的外呼系统将呼叫送到该服务器
- 同时在外呼系统和模拟线路服务器上面抓包
- 在外呼系统上面,当接通的时候,启动ping,ping模拟线路服务器
发送方ping对端服务器
在接通后,开始ping特定的外网地址,每秒输出一个ping的结果,如下图所示:
粗略统计, 在接通后14秒和44秒的時候, 网络发生波动。
发送方抓包
下面是wireshark播放时的波形图:
从图上来看, 发送方送出去的波形是完整的, 没有任何丢包和错误的点。
接收方抓包
下面是wireshark播放时的波形图:
可以看到在差不多14秒和44秒的位置, 都有比较大的卡顿。
因为波形比较密集,放大之后,14秒卡顿的点,其实是由多个错误的点组成。
结论
- 网络存在间歇性的剧烈抖动
- 网络间歇性抖动造成外呼系统送出去的rtp包乱序和丢失
在和运维沟通后, 发现最近他们开启了阿里云的云防火墙功能,特性如下:
云防火墙会控制入流量和出流量,实时通讯的流量大,也没有监控的意义, 不适用于云防火墙。
在将云防火墙关闭后, 系统恢复正常。