网络排查案例课
杨胜辉
eBay 资深运维专家,流量系统负责人
22781 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 39 讲
实战三:不用抓包就能做的网络排查篇 (2讲)
网络排查案例课
15
15
1.0x
00:00/00:00
登录|注册

21 | 为什么用了负载均衡更加不均衡?

会话保持类型
源IP分布不均
访问日志分析
会话保持(Session Persistence)
CPU load不均衡
系统调用(syscall)
strace工具
进程分析:php-fpm
top命令
绕过LB测试
LB日志分析
网络状况
负载均衡策略:round robin
CPU load不均衡
排查LB
初步检查
排查操作系统
排查主机
排查LB
初步检查
应用层面问题
架构体系
操作系统知识
方法论和工具集
TLS
HTTP & HTTPS
其他trace类工具
HTTP 504 vs HTTP 503
HTTP 504和会话保持的影响
strace的使用方法
系统调用和内核态/用户态的理解
网络与系统排查的重要性
发起HTTP请求并观察系统调用
使用strace监听Nginx进程
使用Docker运行Nginx
案例2:LB特性和不均衡
案例1:高负载和不均衡
系统排查
网络排查
思考题
小结
实验操作
案例分析
核心概念
网络和系统排查

该思维导图由 AI 生成,仅供参考

你好,我是胜辉。
咱们课程的第二个实战模块“应用层真实案例揭秘篇”已经进行到后半程了。前半程的四讲(15 到 18)都是围绕应用层特别是 HTTP 的相关问题展开排查。而在刚过去的两讲(19 和 20)里,我们又把 TLS 的知识和排查技巧学习了一遍。
基本上,无论是网络还是应用引发的问题,也无论是不加密的 HTTP 还是加密的 HTTPS,你应该都已经掌握了一定的方法论和工具集,可以搞定不少问题了。
但是我们也要看到,现实世界里也有不少问题是混合型的,未必一定是跟网络有关。比如,你有没有遇到过类似下面这种问题:
ping 正常,抓包看也没有丢包或者乱序现象,但是应用就是缓慢;
Telnet 端口能通,但应用层还是报错。
其实这也说明了,掌握网络排查技能固然重要,但完全脱离操作系统和架构体系方面的知识,仅根据网络知识去做排查,也有可能会面临知识不够用的窘境。所以,作为一个技术人,我们任何时候都不要限制自己的学习和成长的可能,掌握得越多,相当于手里的牌越多,我们就越可能搞定别人搞不定的问题。
所以接下来的两节课,我会集中围绕系统方面的案例展开分析,希望可以帮助你构造这方面的能力。等以后你遇到网络和系统扯不清的问题时,也不会发怵,而是可以准确定位,高效推进了。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

这篇文章通过两个真实案例展示了排查负载均衡不均衡问题的过程。首先介绍了一个电商客户的负载不均衡问题,经过排查发现是由于负载均衡器的会话保持功能导致的负载不均衡,关闭该功能后问题得到解决。其次,通过实验展示了如何使用strace工具来追踪进程的系统调用,以及介绍了系统调用和strace工具的作用。文章还提到了HTTP 504和503状态码的区别,以及对会话保持功能的建议。整体来说,本文通过实际案例和实验,详细介绍了排查负载均衡不均衡问题的思路和方法,对于需要了解系统排查技术的读者具有一定的参考价值。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《网络排查案例课》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(10)

  • 最新
  • 精选
  • Chao
    503 服务不可用。 反代无法到达业务服务商。

    作者回复: 是的,如果反向代理或者LB找不到可用的后端服务(比如向后端的健康检查都是失败的),就向前端请求回复503~ 这里也说一下502,503,504的区别: 502:LB收到了后端的无效回复,可以参考前面的第17讲的案例 503:LB明确的知道服务不可用,LB不会转发请求给后端,而是直接向前端回复503 504:LB转发了请求给后端,但后端没有在时限内返回,到了时间点LB就向前端回复504

    2022-03-09
    6
  • 小白
    第一个案例按照道理top -c 本身就能定位到问题所在。

    作者回复: 你好,这个问题在于,当时我们并不了解php-fpm,更不知道newrelic意味着什么,所以是先找问题进程(Php-fpm),然后找它具体在做什么(定位到98%的时间在做gettimeofday),从而推理出这个进程在收集性能数据,最后才想到是newrelic。这是一个推理的过程(前提就是不知道newrelic是什么)。那么推理出来的结论(newrelic引起性能问题),也可以成为经验,下次看到newrelic的存在,可以先排查是否是它引起的问题~

    2022-03-10
    4
  • 那时刻
    老师提到两个案例,都曾遇到过。不过当时我的服务被new relic搞得cpu飙升,老师提供的strace是个很好的工具。

    作者回复: 嗯,我们做这个案例前,也不知道newrelic是什么。strace因为是大部分linux机器默认自带的,所以直接用就好了。如果觉得系统调用的信息还不够,还想查到内核内部的函数调用链,那就要用到ftrace了

    2022-03-09
    2
  • taochao_zs
    1 503是表示后端服务不可用,后端respone返回404或500,LB这层应该就会解析成503; 2 perf工具排查业务调用函数cpu分布,动态追踪systemtab;

    作者回复: 其实503的语义来说,还是根据后端服务可用性来判断的,如果LB认为后端已经不可用,就会回复503。如果后端回复404,500,LB会原样转发的:) 嗯perf和systemtap的补充也很好~

    2022-03-09
    2
    2
  • Realm
    问题一: 503错误,估计是后端服务已经不可用了,不是慢的问题了,比如程序挂了、被ddos攻击、高负载被熔断了; 问题二: strace -p真是香,可以追踪系统调用,查看调用栈,可以定位很多问题。 类似的这种动态追踪的技术,还有perf,eBPF 谢谢老师的分享!

    作者回复: 嗯,关于502,503,504的区别,我这里也补充一下: 502:LB收到了后端的无效回复,可以参考前面的第17讲的案例 503:LB明确的知道服务不可用,LB不会转发请求给后端,而是直接向前端回复503 504:LB转发了请求给后端,但后端没有在时限内返回,到了时间点LB就向前端回复504 strace一般情况下够用了,如果要更详细到内核本身,除了你说的perf, eBPF,还可以用ftrace 也感谢你的支持:)

    2022-03-09
    2
    1
  • Bachue Zhou
    New Relic 也是很有名的软件了,怎么会有这种低级问题。。

    作者回复: 回头看这个问题并不复杂,所以重在整理分析思路。也许这次是newrelic引起问题,下次是别的什么引起问题了:)

    2022-11-03归属地:上海
  • William Ning
    Cool, keep learning~~

    作者回复: 加油!

    2022-05-11
  • 兔极生威
    作者能说说lb的直接访问和绕开的部署方式吗?还有为什么strace -p phppid你能看到其他进程的系统调用呢
    2023-02-16归属地:上海
  • piboye
    timeout 竟然又学到个bash 命令, 佩服老师
    2022-08-06归属地:广东
  • 追风筝的人
    1. 503是服务端故障 服务不可用 2. strace, dig, queryperf , traceroute
    2022-03-18
收起评论
显示
设置
留言
10
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部