摘要
ping延时问题是线上比较常见的一种性能问题,触发的原因也比较多,现通过一个案例分享几个常见的分析方法:
对于同一个vpc的两个空闲主机来说,延时超过10ms明显是不正常的。
分析过程
1. 对于网络延时问题,可以先通过tcpdump抓包来缩小问题的范围,分别在宿主机和云主机上抓包,命令如下:
云主机:tcpdump -i eth0 icmp and host <dest ip>
宿主机:ovs-tcpdump -i <vhu port> icmp and <dest ip>
通过抓包分析发现延时主要发生在源端云主机(源端宿主机虚拟网卡223us就收到了reply)
64 bytes from 172.16.0.14: icmp_seq=80 ttl=64 time=42.4 ms
00:00:00.019788 IP 172.16.0.13 > 172.16.0.14: ICMP echo request, id 16906, seq 80, length 64
00:00:00.000223 IP 172.16.0.14 > 172.16.0.13: ICMP echo reply, id 16906, seq 80, length 64
2. 通过bcc工具排查是否出现了vcpu的争抢,正好发现40+ms的调度延时,和ping延时比较吻合
3. 通过perf工具分析vcpu1绑定的pcpu资源使用情况,可以看到对应的pcpu触发大量 estimation_timer 造成资源争抢
经过分析,发现社区已经提供问题的解决方案,下一步通过热补丁修复。