21 | 为什么用了负载均衡更加不均衡?
该思维导图由 AI 生成,仅供参考
- 深入了解
- 翻译
- 解释
- 总结
这篇文章通过两个真实案例展示了排查负载均衡不均衡问题的过程。首先介绍了一个电商客户的负载不均衡问题,经过排查发现是由于负载均衡器的会话保持功能导致的负载不均衡,关闭该功能后问题得到解决。其次,通过实验展示了如何使用strace工具来追踪进程的系统调用,以及介绍了系统调用和strace工具的作用。文章还提到了HTTP 504和503状态码的区别,以及对会话保持功能的建议。整体来说,本文通过实际案例和实验,详细介绍了排查负载均衡不均衡问题的思路和方法,对于需要了解系统排查技术的读者具有一定的参考价值。
《网络排查案例课》,新⼈⾸单¥59
全部留言(10)
- 最新
- 精选
- Chao503 服务不可用。 反代无法到达业务服务商。
作者回复: 是的,如果反向代理或者LB找不到可用的后端服务(比如向后端的健康检查都是失败的),就向前端请求回复503~ 这里也说一下502,503,504的区别: 502:LB收到了后端的无效回复,可以参考前面的第17讲的案例 503:LB明确的知道服务不可用,LB不会转发请求给后端,而是直接向前端回复503 504:LB转发了请求给后端,但后端没有在时限内返回,到了时间点LB就向前端回复504
2022-03-096 - 小白第一个案例按照道理top -c 本身就能定位到问题所在。
作者回复: 你好,这个问题在于,当时我们并不了解php-fpm,更不知道newrelic意味着什么,所以是先找问题进程(Php-fpm),然后找它具体在做什么(定位到98%的时间在做gettimeofday),从而推理出这个进程在收集性能数据,最后才想到是newrelic。这是一个推理的过程(前提就是不知道newrelic是什么)。那么推理出来的结论(newrelic引起性能问题),也可以成为经验,下次看到newrelic的存在,可以先排查是否是它引起的问题~
2022-03-104 - 那时刻老师提到两个案例,都曾遇到过。不过当时我的服务被new relic搞得cpu飙升,老师提供的strace是个很好的工具。
作者回复: 嗯,我们做这个案例前,也不知道newrelic是什么。strace因为是大部分linux机器默认自带的,所以直接用就好了。如果觉得系统调用的信息还不够,还想查到内核内部的函数调用链,那就要用到ftrace了
2022-03-092 - taochao_zs1 503是表示后端服务不可用,后端respone返回404或500,LB这层应该就会解析成503; 2 perf工具排查业务调用函数cpu分布,动态追踪systemtab;
作者回复: 其实503的语义来说,还是根据后端服务可用性来判断的,如果LB认为后端已经不可用,就会回复503。如果后端回复404,500,LB会原样转发的:) 嗯perf和systemtap的补充也很好~
2022-03-0922 - 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-0921 - Bachue ZhouNew Relic 也是很有名的软件了,怎么会有这种低级问题。。
作者回复: 回头看这个问题并不复杂,所以重在整理分析思路。也许这次是newrelic引起问题,下次是别的什么引起问题了:)
2022-11-03归属地:上海 - William NingCool, keep learning~~
作者回复: 加油!
2022-05-11 - 兔极生威作者能说说lb的直接访问和绕开的部署方式吗?还有为什么strace -p phppid你能看到其他进程的系统调用呢2023-02-16归属地:上海
- piboyetimeout 竟然又学到个bash 命令, 佩服老师2022-08-06归属地:广东
- 追风筝的人1. 503是服务端故障 服务不可用 2. strace, dig, queryperf , traceroute2022-03-18