上一题下一题

服务化改造中,某个下游服务从单实例扩展到多实例后,上游仍偶发超时。请从负载均衡、连接池、超时和慢节点角度分析可能原因及定位方法。

进阶版
来源:baidu中级工程师负载均衡与连接池调优分布式追踪依赖指标分析超时重试策略
草稿该题目为草稿状态,前台公开题库中不可见。
答案解析

这个问题我会从调用链路上拆开看:服务已经扩成多实例,但上游仍然偶发超时,说明问题不一定是整体容量不足,更多可能是流量分配、连接复用、超时配置或者个别实例异常导致的尾延迟。

负载均衡方面 ,常见问题是流量没有真正均匀打到多个实例。比如上游本地缓存了服务地址,但服务发现刷新不及时,仍然主要访问老实例;或者负载均衡策略是长连接维度的,连接建立后一直复用,新增实例短时间内没有流量;再比如使用了轮询但某些实例权重配置不一致,或者 Nginx / 网关 / SDK 的负载均衡策略存在会话保持,导致流量倾斜。

定位时我会先看下游各实例的 QPS、RT、错误率、CPU、线程数、连接数是否均衡。如果某个实例 QPS 明显高于其他实例,就要重点排查服务发现、权重、负载均衡策略和连接复用情况。也可以在上游日志里打印实际调用的下游实例 IP,统计一段时间内的分布。

连接池方面 ,扩容后如果上游连接池没有感知多实例,也可能导致超时。比如上游 HTTP/RPC 客户端对单个 host 建了固定数量连接,新增实例没有及时建立连接;或者连接池总连接数太小,高峰时请求都在排队等连接,表现出来就是偶发超

登录后查看完整内容