有了这款 Linux 网络延迟排查方法再也不用加班了.docx
《有了这款 Linux 网络延迟排查方法再也不用加班了.docx》由会员分享,可在线阅读,更多相关《有了这款 Linux 网络延迟排查方法再也不用加班了.docx(11页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、有了这款Linux网络延迟排查方法,再也不用加班了在我的上一篇文章中,我向您展示了如何模拟DDoS攻击以及如何缓解它。简单回 顾一下,DDoS利用了大量的伪造请求,导致目标服务器消耗大量资源来处理这些 无效请求,从而无法正常响应正常用户请求。在Linux服务器中,可以通过内核调优、DPDK以及XDP等多种方式提高服务器的抗攻击能力,降低DDoS对正常服务的影响。在应用程序中,可以使用各级缓存、WAF、CDN等来缓解DDoS对应用程序的影响。但是需要注意的是,如果DDoS流量已经到达Linux服务器,那么即使应用层做了各种优化,网络服务延迟一般也会比平时大很多。因此,在实际应用中,我们通常使用L
2、inux服务器,配合专业的流量清洗和网络防火墙设备,来缓解这个问题。除了 DDoS导致的网络延迟增加,我想你一定见过很多其他原因导致的网络延迟,例如:网络传输慢导致的延迟。Linux内核协议栈数据包处理速度慢导致的延迟。应用程序数据处理速度慢造成的延迟等。那么当我们遇到这些原因造成的延误时,我们该怎么办呢?如何定位网络延迟的根本原因?让我们在本文中讨论网络延迟。Linux网络延迟谈到网络延迟(Network Latency),人们通常认为它是指网络数据传输所需的时间。但是,这里的“时间”是指双向流量,即数据从源发送到目的地,然后从目的地地址返回响应的往返时间:RTT (Round-Trip T
3、ime)。除了网络延迟之外,另一个常用的指标是应用延迟(Application Latency),它是指应用接收请求并返回响应所需的时间。通常,应用延迟也称为往返延迟,它是 网络数据传输时间加上数据处理时间的总和。通常人们使用ping命令来测试网络延迟,ping是基于ICMP协议的,它通过 计算ICMP发出的响应报文和ICMP发出的请求报文之间的时间差来获得往返延 迟时间。这个过程不需要特殊的认证,从而经常被很多网络攻击所利用,如,端口 扫描工具 nmap分组工具 hping3 等。因此,为了防止这些问题,很多网络服务都会禁用ICMP,这使得我们无法使用ping来测试网络服务的可用性和往返延迟
4、。在这种情况下,您可以使 用 traceroute 或 hping3 的TCP和UDP模式来获取网络延迟。例如:# -c:3 requests-S: Set TCP SYNto 80# -p: Set port$ hping3 -c 3 -S -p HPING google (ethO data byteslen=46 ip=142.250.64.110 win=8192 rtt=9.3 ms len=46 ip=142.250.64.110 win=8192 rtt=10.9 mslen=46 ip=142.250.64.110 win=8192 rtt=l1.9 ms$ hping3 -c
5、 3 -S -p HPING google (ethO data byteslen=46 ip=142.250.64.110 win=8192 rtt=9.3 ms len=46 ip=142.250.64.110 win=8192 rtt=10.9 mslen=46 ip=142.250.64.110 win=8192 rtt=l1.9 ms80 google 142. 250. 64. 110):ttl=51 id=47908ttl=51 id=6788ttl=51 id=37699S set, 40 headers + 0sport=80 flags=SA seq=0flags=SA s
6、eq=lsport=80 flags=SA seq=2sport=80 baidu hping statistic 3 packets transmitted, 3 packets received, 0% packet loss round-trip min/avg/max = 9.3/10.9/11.9 ms 当然,你也可以使用 traceroute:$ traceroute -tcp -p 80 -n google, comtraceroute to google, com (142. 250. 190. 110),30 hops max, 60 bytepackets 1* * *2
7、240. 1. 236. 340. 198 ms * *3 * * 243. 254. 11. 50. 189 ms4 * 240. 1. 236. 170. 216 ms 240. 1. 236. 240. 175 ms5 241. 0. 12. 760. 181 ms 108. 166. 244. 150. 234 ms 241. 0. 12. 760. 219 ms 24142. 250. 190. 11017. 465 ms 108. 170. 244. 118. 532 ms 142. 251. 60. 20718. 595 mstraceroute会在路由的每一跳(hop)发送三个
8、数据包,并在收到响应后输出往返延迟。如果没有响应或响应超时(默认5s),将输出一个星号案例展示我们需要在此演示中托管hostl和host2两个主机:# hostl (192. 168. 0. 30):托管两个Nginx Web应用程序(正常和延迟)host2 (192. 168. 0. 2):分析主机hostl准备在hostl上,让我们运行启动两个容器,它们分别是官方Nginx和具有延迟版本的 Nginx:# Official nginx$ docker run -network=host -name=good -itd nginxfb4ed7cb9177dl0e270f8320a7fb647
9、17eac3451114c9fab3c50e02be2e88ba2Latency version of ngi nx$ docker run -name nginx -network=host -itd feisky/nginx:latenc yb99bdi36dcfd907747d9c803fde0255e578bad6d66f4e9c32b826d75b6812724运行以下命令以验证两个容器都在为流量提供服务:$ curl :/127. 0. 0. 1 Thank you for using nginx.$ curl :/127.0.0.1:8080 Thank you for usin
10、g nginx. host2准备现在让我们用上面提到的 hping3 来测试它们的延迟,看看有什么区别。在 host2中,执行以下命令分别测试案例机的8080端口和80端口的延迟: 80 端口: $ hping3 -c 3 -S -p 80 192. 168. 0. 3040 headers40 headersHPING 192. 168. 0. 30 (ethO 192. 168. 0. 30) : S set,data byteslen=44 ip= 192. 168. 0. 30 n=29200 rtt=7.8 ms len=44 ip=192, 168. 0. 30 n=29200 r
11、tt=7.7 ms len=44 ip=192.168.0.30 n=29200 rtt=7.6 msttl=64 DF id=0 sport=80tt1=64 DF id=0 sport=80ttl=64 DFid=0 sport=80- 192. 168. 0. 30 hping3 packets transmitted,statistic3 packets received,0%flags=SA seq=0 flags=SA seq=lflags二SA seq=2packet losswiwiwiround-trip min/avg/max7. 6/7. 7/7. 8 ms8080 端口
12、: # 测试8080端口延迟$ hping3 -c 3 -S -p 8080 192. 168. 0. 30HPING 192.168.0.30 (ethO 192.168.0.30): S set, 40 headers + 0data bytes len=44 ip=192.168.0.30 win=29200 rtt=7.7 ms len=44 ip=192.168.0.30 win=29200 rtt=7.6 ms len=44 ip=192.168.0.30 win=29200 rtt=7.3 msdata bytes len=44 ip=192.168.0.30 win=29200
13、 rtt=7.7 ms len=44 ip=192.168.0.30 win=29200 rtt=7.6 ms len=44 ip=192.168.0.30 win=29200 rtt=7.3 msttl=64tt1=64tt1=64DFDFDFid=0id=0id=0sport=8080sport=8080sport=8080flags二SAflags=SAflags=SAseq=0seq=lseq=2192. 168. 0. 30 hpingstatistic3 packets transmitted,3 packets transmitted,3 packets received, 0%
14、 packet lossround-trip min/avg/maxround-trip min/avg/max7. 3/7. 6/7. 7 ms从这个输出中您可以看到两个端口的延迟大致相同,从这个输出中您可以看到两个端口的延迟大致相同,均为7毫秒。但这仅适用于个请求。如果换成并发请求怎么?接下来,让我们wrk ( s : /github. com/wg/wrk) 试试。80 :/192.168.0.30/wrk latency -c 100 -t 2 timeoutRunning 10s test2 threads andRunning 10s test2 threads and 100 c
15、onnectionsThread StatsLatencyReq/SecAvg9.19msStdev12. 32msMax319.61ms6. 20k426. 808. 25k+/- Stdev97. 80%85. 50%Latency Distribution50%7. 78ms75%8. 22ms90%9. 14ms99%50. 53ms123558 requests in 10.01s,100.15MBreadRequests/sec:Transfer/sec:Requests/sec:Transfer/sec:12340.9110.00MB8080 端口:$ wrk -latency
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 有了这款 Linux 网络延迟排查方法再也不用加班了 有了 网络 延迟 排查 方法 再也 不用 加班
限制150内