深入分析 Linux 网络丢包问题.docx
《深入分析 Linux 网络丢包问题.docx》由会员分享,可在线阅读,更多相关《深入分析 Linux 网络丢包问题.docx(11页珍藏版)》请在优知文库上搜索。
1、所谓丢包,足指在网络数据的收发过程中,由于种种原因,数据包还没传输到应用程序中,就被丢作了.这些被丢弃包的数景,除以总的传输包数,也就是我们常说的丢包率。丢包率是网络性能中最核心的指标之一。丢包通常会带来严重的性能下降,特别是对TCp来说,丢包通常意味着网络拥塞和电传进而还会导致网络延迟增大、吞吐降低.一、哪里可能丢包接下来,我就以最常用的反向代理服务器Nginx为例,带你一起看看如何分析网络丢包的问题,执行下面的hping3命令,进一步验证Nginx是不是可以正常访问。这里我没有使用Ping,是因为ping基于ICMP协议,而Nginx使用的是TCP协议.110packetstransmit
2、ted,5packetsreceived,5%packetlossround-tripmin/avg/nax三3.0/609.7/3027.2ns从hping3的输出中,我们可以发现,发送了10个请求包,却只收到了5个回豆,50%的包都丢了.再观察每个请求的RTT可以发现,RTT也有非常大的波动变化,小的时候只有3ms,而大的时候则有3s根据这些输出,我们基本能判断,已经发生了丢包现象,可以猜测,3s的RTT,很可能是因为丢包后至传导致的.那到底是哪里发生了丢包呢?排查之前,我们可以回忆一下1.inux的网络收发流程,先从理论上分析,哪里有可能会发生丢包.你不妨拿出手边的笔和纸,边回忆边在纸上
3、梳理,思考清楚再继续下面的内容.在这里,为了帮你理解网络丢包的原理,我画了一张图,你可以保存并打印出来使用从图中你可以看出,可能发生丢包的位置,实际上贯穿了整个网络协议栈.换句话说,全程都有丢包的可能. 在两台VM连接之间,可能会发生传输失败的错误,比如网络拥塞、线路错误等; 在网卡收包后,环形缓冲区可能会因为溢出而丢包; 在腌路屋,可能会因为网络帧校蛉失败、QoS等而丢包; 在IP展,可能会因为路由失败、组包大小超过MTU等而丢包; 在传输屣,可能会因为端口未监听、资源占用超过内核限制等而丢包; 在套接字层,可能会因为套接字缓冲区溢出而丢包; 在应用层,可能会因为应用程序异常而丢包; 此外,
4、如果配背了iptables规则,这些网络包也可能因为iptables过谑规则而丢包当然,上面这些何瓦还有可能同时发生在通信的两台机器中.不过,由于我们没对YM2做任何修改,并旦VM2也只运行了一个最简单的hping3命令,这儿不妨假设它是没有问题的。为了简化整个扑杳过程,我们还可以进一步假设,VMl的网络和内核配置也没问题接卜.来,就可以从协议核中,逐层排查丢包问题。链路层当链路层由于缓冲区溢出等原因导致网卡丢包时,1.inux会在网卡收发数据的统计信息中记录下收发错误的次数.可以通过ethtool或者netstat,来百看网卡的丢包记录。3SRX-OK.RX-ERR,RX-DRP,RX-OV
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 深入分析 Linux 网络丢包问题 深入 分析 网络 问题