47 | 案例篇:服务器总是时不时丢包,我该怎么办?(上)
倪朋飞
该思维导图由 AI 生成,仅供参考
你好,我是倪朋飞。
上一节,我们梳理了,应用程序容器化后性能下降的分析方法。一起先简单回顾下。
容器利用 Linux 内核提供的命名空间技术,将不同应用程序的运行隔离起来,并用统一的镜像,来管理应用程序的依赖环境。这为应用程序的管理和维护,带来了极大的便捷性,并进一步催生了微服务、云原生等新一代技术架构。
不过,虽说有很多优势,但容器化也会对应用程序的性能带来一定影响。比如,上一节我们一起分析的 Java 应用,就容易发生启动过慢、运行一段时间后 OOM 退出等问题。当你碰到这种问题时,不要慌,我们前面四大基础模块中的各种思路,都依然适用。
实际上,我们专栏中的很多案例都在容器中运行。容器化后,应用程序会通过命名空间进行隔离。所以,你在分析时,不要忘了结合命名空间、cgroups、iptables 等来综合分析。比如:
cgroups 会影响容器应用的运行;
iptables 中的 NAT,会影响容器的网络性能;
叠加文件系统,会影响应用的 I/O 性能等。
所谓丢包,是指在网络数据的收发过程中,由于种种原因,数据包还没传输到应用程序中,就被丢弃了。这些被丢弃包的数量,除以总的传输包数,也就是我们常说的丢包率。丢包率是网络性能中最核心的指标之一。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
在容器化环境中分析服务器丢包问题是一项复杂的任务,本文通过以Nginx为例,介绍了如何从链路层、网络层和传输层入手,分析网络丢包的问题。首先,文章介绍了容器化应用程序通过命名空间进行隔离,需要结合命名空间、cgroups、iptables等进行综合分析。然后,通过实际案例,读者可以了解如何使用hping3和curl工具来验证Nginx的正常访问情况,并从协议栈中逐层排查丢包问题。文章还提供了案例准备和分析的具体步骤,帮助读者快速了解并解决服务器丢包问题。总的来说,本文详实地介绍了在容器化环境中分析服务器丢包问题的方法,适合需要解决这一问题的技术人员阅读。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Linux 性能优化实战》,新⼈⾸单¥68
《Linux 性能优化实战》,新⼈⾸单¥68
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(14)
- 最新
- 精选
- 无名老卒经过一夜的思考,终于搞明白了,使用iptables做了限制,删除这2条规则就正常Ping了。 root@nginx:/# iptables -nvL Chain INPUT (policy ACCEPT 84 packets, 3472 bytes) pkts bytes target prot opt in out source destination 51 2116 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 statistic mode random probability 0.29999999981 Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 65 packets, 2960 bytes) pkts bytes target prot opt in out source destination 38 1716 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 statistic mode random probability 0.29999999981
作者回复: 👍
2019-05-0410 - 亚洲-凯撒大帝netstat -s 的数据怎么重置呢
作者回复: 这是从proc文件系统读出来的,重置只能重启
2019-03-163 - 日拱一卒遇到过 ingress envoy -> 某组应用容器 时不时的容器访问 503的问题, 抓包放 wireshark 分析,发现有大量的 dup ack。 2个容器的机器指标正常, pod 指标正常。 至今不知道原因, 升级了操作系统内核后, 问题有所缓解,但是没有根本解决问题。 作者可否提供个思路?
作者回复: 请参考文中(47和48篇)的思路分析
2019-03-132 - 青石TCP缓冲区在溢出后,数据会被阻塞并不会丢弃,从netstat可以看到Recv-Q的值很大。 UDP缓冲区溢出,直接丢弃报文,从netstat -s可以看到UDP有大量的packet receive errors错误。 看了47、48节,并没有从套接字层排查问题是因为使用TCP协议的原因吗?
作者回复: 我们这是丢包问题,只需要去分析netstat中有丢包的位置就可以了
2019-03-211 - cheyangnetstat -s中的failed connection attempts的ip源有办法定位到吗?
作者回复: ss 查看SYN-SENT状态的连接;或者,使用tcpdump抓包
2019-03-201 - H老师能详细解释下一TcpExt 里的指标分别是代表什么意思吗?
作者回复: 这儿指标太多了,大部分还都是完整的英语句子,应该很好理解。如果有哪个不懂的,可以单独提出来
2019-03-131 - 我来也[D47打卡] 不知为何,容器中的mtu值只有100, 即使`ifconfig eth0 mtu 1400`,丢包率也是依旧很高. 我这边的hping3结果中,有些看不懂的地方: DUP! len=44 ip=192.168.1.128 ttl=63 DF id=0 sport=80 flags=SA seq=2 win=27200 rtt=1018.3 ms len=44 ip=192.168.1.128 ttl=63 DF id=0 sport=80 flags=SA seq=4 win=27200 rtt=1032.7 ms DUP! len=44 ip=192.168.1.128 ttl=63 DF id=0 sport=80 flags=SA seq=2 win=27200 rtt=3034.1 ms 这里的DUP应该是重复了的意思吧. 老师这个案例太狠了,连链路层上都做了手脚.😐
作者回复: 你这容器中mtu只有100是更狠呀😊 DUP表示收到了重复包
2019-03-1321 - Frank老师 TcpExt: 表示什么项目哦?
作者回复: 扩展TCP指标,相对于Tcp部分包含更多的指标
2019-03-13 - ninuxer打卡day50 还没来得及实践,思路是,在服务端用tcpdump抓包,然后导入wireshark分析~2019-03-1311
- 陈靖在实际场景中,使用 netstat -s 的输出报告查看,可能混杂其他一些服务的输出,一些错误也比较混杂,所以这种整个系统的输出报告,参考价值可能不大2020-07-117
收起评论