You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ELB架构下JMeter录制脚本后多线程组仅访问单台Web服务器的问题咨询

嘿,我来帮你排查这个ELB负载分发但JMeter只访问单台Web服务器的问题!这种情况在测试负载均衡时很常见,大概率是这几个细节在搞鬼,咱们一步步来解决:

问题排查与解决方案

1. 先检查ELB的会话保持(粘性会话)配置

ELB默认可能开启了会话保持功能,它会把同一个客户端的所有请求都绑定到同一台后端Web服务器上——不管你用浏览器录制还是JMeter多线程测试,都会被“粘”在一台服务器上。

  • 你可以登录云平台的ELB管理界面,找到会话保持(Sticky Sessions)的设置:
    • 如果是基于Cookie的会话保持,浏览器和JMeter都会被分配固定的服务器;
    • 解决方案:临时关闭会话保持,或者把会话超时时间调到最短(比如1秒),测试完成后再改回原有配置即可。

2. 关闭JMeter的HTTP连接复用

JMeter默认会复用HTTP连接,这意味着同一个线程的所有请求都会走同一个TCP连接,而ELB可能会基于连接来做分发,导致所有请求都打到同一台服务器。

  • 解决方法:在JMeter的HTTP请求或者HTTP请求默认值组件里,找到「Use keepalive」选项,取消勾选。这样每个请求都会建立新的连接,ELB就会重新进行负载分发。

3. 排查录制时的浏览器会话问题

你用Firefox录制时,浏览器可能已经和某台Web服务器建立了会话,导致后续录制的请求都默认走这台服务器。

  • 解决方法:录制前先清除Firefox的缓存和Cookie,或者直接用隐私浏览模式(Incognito Mode)来录制——这样每次都是全新的会话,ELB会重新分配后端服务器。

4. 调整多线程组的会话隔离配置

如果你的多线程组没有做会话隔离,所有线程共享同一个Cookie或上下文,也会导致请求集中在一台服务器上。

  • 解决方法:
    • 添加HTTP Cookie管理器,并勾选「清除每次迭代的Cookie」,让每个线程迭代都重新获取Cookie,避免会话绑定;
    • 确保线程数足够多(比如至少10个以上),请求量太小的话,ELB可能还没触发负载分发逻辑。

5. 验证ELB的健康检查状态

有时候其中一台Web服务器的健康检查失败了,ELB会自动把所有请求都转发到健康的那台服务器上,看起来就像没做负载分发。

  • 解决方法:去ELB的健康检查页面,确认两台Web服务器都处于「健康」状态。如果有一台不健康,先修复Web服务的问题(比如检查服务是否正常运行、端口是否开放)。

测试验证

修改配置后,你可以在JMeter里添加查看结果树组件,查看每个请求响应头里的Server字段(或者Web服务器自定义的标识),确认请求是否分发到了两台不同的服务器。另外,也可以直接查看两台Web服务器的访问日志,看看JMeter的请求是否同时出现在日志里。


内容的提问来源于stack exchange,提问作者Brenda Olivia Martis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:13:46