Linux 平台上诊断网络状态的工具MTR,继承了 Ping、traceoute、nslookup 的功能,默认使用 ICMP 包测试两个节点之前的网络连接情况。
MTR 安装
CentOS:
yum install mtr
Ubuntu:
sudo apt-get install mtr
MTR 相关参数说明
- -h/--help:显示帮助菜单。
- -v/--version:显示MTR版本信息。
- -r/--report:结果以报告形式输出。
- -p/--split:跟 --report 相对,每次追踪的结果分别列出来。
- -c/--report-cycles:设置每秒发送的数据包数量,默认是 10。
- -s/--psize:设置数据包的大小。
- -n/--no-dns:不对 IP 地址做域名解析。
- -a/--address:用户设置发送数据包的 IP 地址,主要用户单一主机多个 IP 地址的场景。
- -4:IPv4。
- -6:IPv6。
- Host:节点的 IP 地址或域名。
- Loss%:丢包率。
- Snt:每秒发送的数量包的数量。
- Last:最近一次的响应时间。
- Avg:平均响应时间。
- Best:最短的响应时间。
- Wrst:最长的响应时间。
- StDev:标准偏差,偏差值越高,说明各个数据包在该节点的响应时间相差越大。
服务器网络延迟和丢包处理
本地访问云服务器或云服务器访问其他网络资源卡顿,Ping 发现存在丢包或时延较高,可能是骨干链路拥塞、链路节点故障、服务器负载高,系统设置问题等原因引起。在排除云服务器自身原因后,可以使用 MTR 进行进一步诊断。
报告结果分析及处理
由于网络状况的非对称性,遇到本地到服务器的网络问题时,建议收集双向的 MTR 数据(从本地到云服务器以及云服务器到本地)。
MTR 结果分析步骤
- 查看目的地 IP 是否丢包,目的地没有丢包基本证明网络正常。中间节点丢包可能是链路节点的 ICMP 限制或其他策略引起,但事实上并未丢包。因此查看 WinMTR/MTR 的结果时,首先查看最后的目的地是否有丢包,如果没有丢包,这证明网络没有问题。
- 目的地发生丢包,这继续往上看,定位出第一次丢包的节点。
- 如果丢包发生在目的服务器,则可能是目的服务器网络配置不当引起,请检查目的服务器的防火墙配置。
如果丢包开始于前三跳,一般为本地运营商网络问题,建议检查访问其他网址是否存在相同情况,存在则反馈给您的运营商进行处理。相反如果丢包发生在接近目的服务器的几跳,则可能为目的服务器运营商的网络问题,请联系腾讯云技术顾问获得帮助(请附上本地到目的服务器,以及目的服务器到本地的 MTR 测试截图,以便工程师进行定位)。 - 若境内服务器访问境外资源,受跨境网络访问限制,访问可能存在不稳定或无法访问的情况。
由于国内运营商跨境传输的带宽负载高,经常绕行(甚至绕行北美再回来),造成丢包、抖动,所以大陆跨境传输普遍没有质量保障,这也是国内所有云厂商都面临的问题。