我的一个服务网络框架用BRPC 进行了一次改造 旧版是libhtp,做新版灰度上线的时候发现了一个问题
灰度上线是在LVS 下面逐渐把新版RS 挂载上去 和逐步删除旧版RS
但发现在请求方流量较高的业务 LVS 会把流量往旧版RS 倾斜。当所有旧版RS 下线后 流量较高的这个客户端会产生大量链接失败的错误
但BRPC 的RS 上的吞吐和其他指标都是正常的,有人知道大概是什么原因吗?
BRPC 目前知道是长连接不会主动关闭链接 旧版是短连接会主动关闭 但这个应该只会影响流量分配 不会造成大量失败的问题?
根据你描述的情况,在灰度上线过程中,LVS(Linux Virtual Server)将流量倾斜到旧版RS(Real Server),而流量较高的客户端在所有旧版RS下线后遇到了大量的连接失败错误。此外,你提到BRPC的RS上的吞吐和其他指标都是正常的。
可能的原因和解决方法如下:
1、LVS配置问题:首先,你可以检查LVS的配置是否正确。确保LVS正确地将流量引导到新版RS,并且没有其他配置问题导致流量倾斜到旧版RS。检查你的LVS配置文件以及相关的负载均衡策略,确保它们与你的预期一致。
2、健康检查设置:LVS通常会执行健康检查来确定RS的可用性。你可以确认健康检查的设置是否正确,以确保LVS将流量引导到正常工作的RS。检查健康检查的超时时间和频率,并确保它们适合你的BRPC RS。
3、连接保持活动:BRPC是长连接,不主动关闭连接,而旧版RS是短连接,并主动关闭。这可能导致LVS在新版RS和旧版RS之间无法正确分配流量。你可以尝试调整LVS的连接保持活动时间或其他相关参数,以适应BRPC的长连接模式。
4、平滑过渡:考虑在灰度上线期间采取平滑过渡的策略,而不是逐一删除旧版RS。你可以逐渐降低旧版RS的权重,同时逐渐增加新版RS的权重,以确保流量平稳地转移到新版RS上。这可以帮助减少连接失败的错误。
5、性能调优:你提到BRPC的RS上的吞吐和其他指标都是正常的。但是,仍然有可能在高流量情况下,RS的性能达到瓶颈。你可以检查RS的资源使用情况,例如CPU、内存、网络带宽等,并进行性能调优以确保RS能够处理高流量负载。