在 Linux 服务器中,可以通过内核调优、DPDK 以及 XDP 等多种方式提高服务器的抗攻击能力,降低 DDoS 对正常服务的影响。在应用程序中,可以使用各级缓存、WAF、CDN 等来缓解 DDoS 对应用程序的影响。
但是需要注意的是,如果 DDoS 流量已经到达 Linux 服务器,那么即使应用层做了各种优化,网络服务延迟一般也会比平时大很多。
因此,在实际应用中,我们通常使用 Linux 服务器,配合专业的流量清洗和网络防火墙设备,来缓解这个问题。
除了 DDoS 导致的网络延迟增加,我想你一定见过很多其他原因导致的网络延迟,例如:
-
网络传输慢导致的延迟。 -
Linux 内核协议栈数据包处理速度慢导致的延迟。 -
应用程序数据处理速度慢造成的延迟等。
那么当我们遇到这些原因造成的延误时,我们该怎么办呢?如何定位网络延迟的根本原因?让我们在本文中讨论网络延迟。
Linux 网络延迟
谈到网络延迟(Network Latency),人们通常认为它是指网络数据传输所需的时间。但是,这里的“时间”是指双向流量,即数据从源发送到目的地,然后从目的地地址返回响应的往返时间:RTT(Round-Trip Time)。
除了网络延迟之外,另一个常用的指标是应用延迟(Application Latency),它是指应用接收请求并返回响应所需的时间。通常,应用延迟也称为往返延迟,它是网络数据传输时间加上数据处理时间的总和。
通常人们使用 ping
命令来测试网络延迟,ping
是基于 ICMP 协议的,它通过计算 ICMP 发出的响应报文和 ICMP 发出的请求报文之间的时间差来获得往返延迟时间。这个过程不需要特殊的认证,从而经常被很多网络攻击所利用,如,端口扫描工具 nmap
、分组工具 hping3
等。
因此,为了避免这些问题,很多网络服务都会禁用 ICMP,这使得我们无法使用 ping 来测试网络服务的可用性和往返延迟。在这种情况下,您可以使用 traceroute
或 hping3
的 TCP 和 UDP 模式来获取网络延迟。
例如:
$ strace -f wrk --latency -c 100 -t 2 --timeout 2 http://192.168.0.30:8080/
...
setsockopt(52, SOL_TCP, TCP_NODELAY, [1], 4) = 0
...
可以看到 wrk
只设置了 TCP_NODELAY
选项,没有设置 TCP_QUICKACK
。现在您可以看到为什么延迟 Nginx(案例 Nginx)响应会出现一个延迟。
结论
在本文中,我们向您展示如何分析增加的网络延迟。网络延迟是核心网络性能指标。由于网络传输、网络报文处理等多种因素的影响,网络延迟是不可避免的。但过多的网络延迟会直接影响用户体验。
-
使用 hping3
和wrk
等工具确认单个请求和并发请求的网络延迟是否正常。 -
使用 traceroute
,确认路由正确,并查看路由中每个网关跳跃点的延迟。 -
使用 tcpdump
和Wireshark
确认网络数据包是否正常收发。 -
使用 strace
等观察应用程序对网络 socket 的调用是否正常。
来源:https://blog.devgenius.io/linux-troubleshoot-network-latency-a6da740f5cb8
--完-- 读到这里说明你喜欢本公众号的文章,欢迎 置顶(标星)本公众号 Linux技术迷,这样就可以第一时间获取推送了~ 在本公众号 Linux技术迷,后台回复:Linux,领取2T学习资料 ! 推荐阅读 1. Linux 中 find 命令的 35 个实际例子 2. 运维必备的《网络端口大全》,看这一份就够了 3. Linux 学习指南 (收藏篇) 4. 2万字系统总结,带你实现Linux命令自由 本篇文章来源于微信公众号:程序IT圈
原创文章,作者:software,如若转载,请注明出处:https://www.sldh123.com/6708.html