文章目录
前言
很多时候,我们听到大家抱怨,网好卡啊,请求好慢啊,这些其实都是网络延迟比较大的原因。这篇文字带你了解网络延迟是什么,如何测试网络延迟,如何排查网络延迟的问题。
一、网络延迟
网络延迟
通常,我们常用的是双向的往返通信延迟,即从原地址到目的地址,然后又从目的地址返回响应,这个往返全程所用的时间。
应用程序延迟
另外一个指标是应用程序延迟,即从应用程序接受到请求,再到发回响应,全程所用的时间。应用程序延迟,是网络数据传输时间加上数据处理时间的和。
二、网络延迟测试
1.ping命令
我们通常使用ping,命令来测试远程主机的连通和延迟。
ping基于ICMP协议,通过计算ICMP的响应报文和ICMP的请求报文的时间差,获取往返延迟。
bash
# -c3 表示发送三次ICMP包后停止。
[root@test-90 data]# ping -c3 www.163.com
PING www.163.com.w.kunluncan.com (125.38.11.222) 56(84) bytes of data.
64 bytes from no-data (125.38.11.222): icmp_seq=1 ttl=128 time=10.0 ms
64 bytes from no-data (125.38.11.222): icmp_seq=2 ttl=128 time=11.9 ms
64 bytes from no-data (125.38.11.222): icmp_seq=3 ttl=128 time=9.98 ms
--- www.163.com.w.kunluncan.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 9.981/10.677/11.952/0.906 ms
# 上面示例显示,发送了三个网络包,收到3个响应,没有丢包。平均往返延迟(RTT)结果是10.677ms
2.hping3命令
当网络服务禁止了ICMP,就无法再通过ping命令测试网络可用性和延时,还可以使用hping3命令。
hping3 安装,Centos7可以使用 yum install hping3安装,使用epel源。
bash
[root@test-90 data]# hping3 -c 3 -S -p 80 www.163.com
HPING www.163.com (ens33 125.38.11.222): S set, 40 headers + 0 data bytes
len=46 ip=125.38.11.222 ttl=128 id=18320 sport=80 flags=SA seq=0 win=64240 rtt=9.5 ms
len=46 ip=125.38.11.222 ttl=128 id=18321 sport=80 flags=SA seq=1 win=64240 rtt=12.2 ms
len=46 ip=125.38.11.222 ttl=128 id=18322 sport=80 flags=SA seq=2 win=64240 rtt=12.1 ms
--- www.163.com hping statistic ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max = 9.5/11.3/12.2 ms
3. traceroute 命令
bash
# --tcp 表示使用tcp协议, -p 表示端口号 -n 表示不对结果中的IP地址执行反向域名解析。
[root@test-90 data]# traceroute --tcp -p 80 -n www.163.com
traceroute to www.163.com (125.38.11.222), 30 hops max, 60 byte packets
1 192.168.37.2 0.893 ms 0.898 ms 0.674 ms
2 125.38.11.222 7.729 ms 9.204 ms 8.071 ms