JMeter线程连接机制疑问与K8s API压测副本分配异常排查
JMeter压测K8s应用问题及连接机制解答
关于K8s仅单个副本接收请求的问题
- 核心原因大概率是连接复用+K8s Service会话保持的组合效应:JMeter默认复用连接,而K8s Service默认可能开启了基于客户端IP的会话亲和性,导致所有请求都被路由到同一个Pod副本。
- 解决方向:
- 修改K8s Service配置:将
spec.sessionAffinity设置为None,关闭会话保持,让请求轮询分发到两个副本。 - 调整JMeter连接设置:在HTTP请求的“高级”选项中取消勾选“使用Keep-Alive”,强制每次请求创建新连接,迫使Service重新选择Pod。
- 修改K8s Service配置:将
JMeter线程与连接机制的疑问解答
1. JMeter线程是否共用单个连接?
- 默认情况下,每个JMeter线程(虚拟用户)维护独立的连接池,线程之间的连接完全隔离,不会共用。每个线程的连接状态都是独立的。
2. JMeter是复用连接还是每次请求创建新连接?
- 取决于是否开启
Keep-Alive(HTTP长连接):- 默认开启
Keep-Alive:同一个线程内的多次请求会复用同一个TCP连接,直到连接因超时、服务器断开等原因关闭。 - 关闭
Keep-Alive:每次发送请求都会新建TCP连接,请求完成后立即关闭连接。
- 默认开启
内容的提问来源于stack exchange,提问作者Ali Al Haj
相关产品推荐
相关产品推荐

