wireshark抓包日志分析
数千线高并发压测时,asr_ring洗号服务报错Session idle too long,意思是洗号这边一直没有收到音频数据直到超时报错。由于缺失日志线索,只能通过wireshark分析抓取的包。
1.抓包数据:
由于是千线压测,洗号的服务器都是分布式部署的,我是在洗号服务器和网关之间抓的包,抓包命令如下:
# tcpdump -i eno1 -s 0 host 10.0.1.71 and \(10.0.1.46 \) -w 1028.cap
其中 eno1为网卡名称 ,-s 0一般不做更改。
2.抓包后将生成的文件再使用wireshark分析,比如说如下图:
我要找的数据就是报错的那一通电话,数据量很大,肉眼搜索肯定不可取,需要根据关键字匹配搜索。
wireshark搜索框支持关键字补全功能,过滤功能强大,通过如下命令匹配协议名称,端口,文字,其中文字模糊匹配使用关键字‘contains’。
3.wireshark搜索完成之后也可以在进行分组
通过抓包可以明显的看出来,asr_ring洗号服务一直处于连接状态,直到20秒之后断开连接,但是逻辑为播报完31s录音后,洗号返回结果,所以问题暴露在洗号为什么会一直连接不释放直至超时,以及外呼系统这边为什么结束通话这么慢。