概述

本文主要介绍在使用负载均衡SLB时,出现请求分布不均衡的原因及排查思路。

详细信息

可能原因

请求分布不均衡可能有以下几种原因:

  • 总体的请求数较少。例如,总请求数为7,后端服务器组中共有3台ECS实例,不考虑其他功能的影响,3台ECS实例中将有1台被分配到3个客户端请求,2台ECS实例被分配到2个客户端请求。
  • 后端服务器组中ECS实例的权重不一致。ECS实例的权重越高,被分配到的请求数越多,详情可参见编辑后端服务器的权重
  • 后端服务器的健康状态异常。开启负载均衡SLB的健康检查功能时,如果健康检查发现后端服务器组中某台ECS实例出现异常,则该实例暂时不会被分配请求;当健康检查发现该实例恢复正常时,将重新分配请求到该实例,于是出现请求分配不均衡的现象。详情可参见健康检查
  • 负载均衡SLB实例开启了会话保持功能。开启会话保持后,如果客户端的IP地址相对固定,或者客户端的请求数差异较大,容易出现请求分配不均衡的现象。示例如下。
    • 客户端的IP地址相对固定。例如,CDN的回源请求通过SLB进行负载均衡。CDN回源的IP地址相对集中和固定,相同源IP地址的请求将始终转发给同一台后端服务器,因此造成分配不均衡的现象。详情可参见添加TCP监听
      注:该情况仅适用于TCP监听的SLB实例,因为TCP协议基于IP地址进行会话保持。
    • 客户端的请求数差异较大。例如,使用一台客户端对负载均衡SLB实例进行网站访问的压力测试。在会话期间,该客户端的所有测试请求将始终转发给同一台后端服务器。
  • 后端服务器组中仅部分ECS实例开启了TCP的Keepalive保持长连接特性。当后端服务器中部分ECS实例开启该特性,而部分ECS实例未开启时,连接会在开启该特性的ECS实例中堆积。详情可参见TCP Keepalive HOWTO

排查思路

请求分布不均衡的排查思路如下。

  1. 查看负载均衡SLB的监控信息。如果总体的请求数较少,轻微的请求分配不均衡属于正常现象。关于如何查看监控信息,可参见查看监控
  2. 检查后端服务器组中各个ECS实例的权重是否相同。如果权重不同,则请求分配不均衡属于正常现象。如果您需要修改权重,可参见编辑后端服务器的权重
  3. 查看健康检查日志,确认是否存在健康检查失败或波动现象,并查找原因。关于如何查看健康检查日志,请参见查看健康检查日志
  4. 检查是否开启会话保持功能。如果开启了会话保持功能,轻微的请求分配不均衡属于正常现象。了解更多会话保持相关问题,可参见会话保持常见问题
  5. 检查后端服务器组中是否仅部分ECS实例开启了TCP的Keepalive保持长连接特性。可根据业务实际情况进行调整。
  6. 检查监听的调度算法是否为加权最小连接数(WLC)。如果是,您可以尝试更改为加权轮询(WRR)算法。关于调度算法的概念,请参见添加TCP监听中的调度算法介绍。

适用于

  • 负载均衡 SLB