为何搭配Application Load Balancer的AWS Elastic Beanstalk无法均衡流量?
AWS Elastic Beanstalk ALB流量分配不均问题排查与解决
截图显示两台同规格实例负载差异显著:一台CPU持续100%占用,另一台负载极低;删除高负载实例后,原低负载实例立刻满负载,新创建的实例维持低负载。
常见原因及解决办法
1. 会话粘性配置不合理
如果ALB目标组开启了会话粘性,同一用户的请求会持续路由到同一实例,若存在高请求量的用户,会直接导致单实例负载过高。
- 操作步骤:
- 进入EC2控制台,找到对应ALB关联的目标组
- 查看目标组属性中的粘性会话配置项
- 若非业务必需,直接关闭粘性会话;若需保留,缩短粘性超时时间,避免请求长期绑定同一实例
2. 目标组健康检查异常
健康检查配置不当会让ALB错误判断实例状态,进而把流量集中到“看似健康”的实例上。
- 排查与调整:
- 确认目标组健康检查路径(如
/)能稳定返回200状态码 - 调整健康检查的间隔、超时时间,以及健康/不健康阈值,匹配业务实际响应速度
- 查看实例CloudWatch指标,确认健康检查期间CPU、内存是否出现瓶颈
- 确认目标组健康检查路径(如
3. TCP连接堆积
ALB默认复用后端TCP连接,若某实例的连接数被占满,新请求无法分配,流量会集中到其他可用实例。
- 处理方式:
- 通过CloudWatch查看实例的
TCP Connections指标,确认是否存在连接堆积 - 调整应用服务器的最大连接数配置(如Nginx的
worker_connections、Tomcat的maxConnections) - 修改ALB的连接空闲超时时间,避免长期占用实例连接资源
- 通过CloudWatch查看实例的
4. Elastic Beanstalk配置未同步
EB环境的自定义配置可能未正确同步到ALB,导致流量分配规则异常。
- 解决:
- 检查
.ebextensions目录下的ALB/目标组配置文件,排查规则错误 - 重新部署EB环境,确保配置生效;或通过EB控制台重新关联目标组
- 检查
内容的提问来源于stack exchange,提问作者James Parker
相关产品推荐
相关产品推荐

