tcpdump

项目中, 遇到客户端应用与服务器不定期发生断线的情况. 从客户端API日志和服务端监控日志, 都定位不到问题. 但是大致锁定问题如下:

  1. 客户端发送的req, 服务器都没有收到;
  2. 服务器的push数据, 客户端可以正常收到.

为了进一步定位问题, 在centos7中用tcpdump抓指定目标端口数据包, 配合API日志检查异常原因. tcpdump用到的命令如下:

1
tcpdump -i em1 port 41000 -w tcpcap_yyyymmdd.pcap

为了方便, 在windwos下用wireshark打开 tcpcap_yyyymmdd.pcap文件, 定位到某个frame中, 数据是混乱的, 具体表现为将API中相邻的两次req数据, 拼接到了一个tcp frame中. 并且, 拼接处的截断也是混乱的.

根据这个现象, 怀疑是客户端应用程序中, 在调用API接口是, 可能多线程产生了冲突.