• hping3网络延迟检测工具——筑梦之路


    网络延迟(Network Latency),人们通常认为它是指网络数据传输所需的时间。但是,这里的“时间”是指双向流量,即数据从源发送到目的地,然后从目的地地址返回响应的往返时间:RTT(Round-Trip Time)

    除了网络延迟之外,另一个常用的指标是应用延迟(Application Latency),它是指应用接收请求并返回响应所需的时间。通常,应用延迟也称为往返延迟,它是网络数据传输时间加上数据处理时间的总和。

    通常人们使用 ping 命令来测试网络延迟,ping 是基于 ICMP 协议的,它通过计算 ICMP 发出的响应报文和 ICMP 发出的请求报文之间的时间差来获得往返延迟时间。这个过程不需要特殊的认证,从而经常被很多网络攻击所利用,如,端口扫描工具 nmap、分组工具 hping3 等。

    因此,为了避免这些问题,很多网络服务都会禁用 ICMP,这使得我们无法使用 ping 来测试网络服务的可用性和往返延迟。在这种情况下,您可以使用 traceroute 或 hping3 的 TCP 和 UDP 模式来获取网络延迟。

    1. # -c: 3 requests
    2. # -S: Set TCP SYN
    3. # -p: Set port to 80
    4. $ hping3 -c 3 -S -p 80 google.com
    5. HPING google.com (eth0 142.250.64.110): S set, 40 headers + 0 data bytes
    6. len=46 ip=142.250.64.110 ttl=51 id=47908 sport=80 flags=SA seq=0 win=8192 rtt=9.3 ms
    7. len=46 ip=142.250.64.110 ttl=51 id=6788 sport=80 flags=SA seq=1 win=8192 rtt=10.9 ms
    8. len=46 ip=142.250.64.110 ttl=51 id=37699 sport=80 flags=SA seq=2 win=8192 rtt=11.9 ms
    9. --- baidu.com hping statistic ---
    10. 3 packets transmitted, 3 packets received, 0% packet loss
    11. round-trip min/avg/max = 9.3/10.9/11.9 ms

    traceroute类似的:

    1. $ traceroute --tcp -p 80 -n google.com
    2. traceroute to google.com (142.250.190.110), 30 hops max, 60 byte packets
    3. 1 * * *
    4. 2 240.1.236.34 0.198 ms * *
    5. 3 * * 243.254.11.5 0.189 ms
    6. 4 * 240.1.236.17 0.216 ms 240.1.236.24 0.175 ms
    7. 5 241.0.12.76 0.181 ms 108.166.244.15 0.234 ms 241.0.12.76 0.219 ms
    8. ...
    9. 24 142.250.190.110 17.465 ms 108.170.244.1 18.532 ms 142.251.60.207 18.595 ms

    traceroute 会在路由的每一跳(hop)发送三个数据包,并在收到响应后输出往返延迟。如果没有响应或响应超时(默认 5s),将输出一个星号 *

     wrk (https://github.com/wg/wrk) 

    1. $ wrk --latency -c 100 -t 2 --timeout 2 http://192.168.0.30/
    2. Running 10s test @ http://192.168.0.30/
    3. 2 threads and 100 connections
    4. Thread Stats Avg Stdev Max +/- Stdev
    5. Latency 9.19ms 12.32ms 319.61ms 97.80%
    6. Req/Sec 6.20k 426.80 8.25k 85.50%
    7. Latency Distribution
    8. 50% 7.78ms
    9. 75% 8.22ms
    10. 90% 9.14ms
    11. 99% 50.53ms
    12. 123558 requests in 10.01s, 100.15MB read
    13. Requests/sec: 12340.91
    14. Transfer/sec: 10.00MB
    15. --------------------------------------------------
    16. $ wrk --latency -c 100 -t 2 --timeout 2 http://192.168.0.30:8080/
    17. Running 10s test @ http://192.168.0.30:8080/
    18. 2 threads and 100 connections
    19. Thread Stats Avg Stdev Max +/- Stdev
    20. Latency 43.60ms 6.41ms 56.58ms 97.06%
    21. Req/Sec 1.15k 120.29 1.92k 88.50%
    22. Latency Distribution
    23. 50% 44.02ms
    24. 75% 44.33ms
    25. 90% 47.62ms
    26. 99% 48.88ms
    27. 22853 requests in 10.01s, 18.55MB read
    28. Requests/sec: 2283.31
    29. Transfer/sec: 1.85MB
    30. 从以上两个输出可以看出,官方 Nginx(监听 80 端口)的平均延迟为 9.19ms,而案例 Nginx(监听 8080 端口)的平均延迟为 43.6ms。从延迟分布上来看,官方 Nginx 可以在 9ms 内完成 90% 的请求;对于案例 Nginx,50% 的请求已经达到 44ms

    参考资料:

    有了这款 Linux 网络延迟排查方法,再也不用加班了

  • 相关阅读:
    融合鲸鱼算法的混合灰狼优化算法
    【C++】【自用】STL的六大组件:迭代器
    IO流【Java对象的序列化和反序列化、File类在IO中的作用、装饰器模式构建IO流体系、Apache commons-io工具包的使用】(四)-全面详解(学习总结---从入门到深化)
    TMS320F28374S之DAC
    k8s基础知识扫盲及企业落地实践分享
    Python数据结构(顺序表)
    计算机考研 创新 简史 专利 量子力学等
    视频特效编辑软件 After Effects 2022 mac中文版介绍 (ae 2022)
    Python学习----Demo(pyecharts)
    电商(淘宝1688京东拼多多等)API接口服务:提升商业效率和用户体验的关键
  • 原文地址:https://blog.csdn.net/qq_34777982/article/details/126891603