JMeter 5.4.1调用POST接口出现java.net.SocketTimeoutException: Read timed out如何解决?
JMeter POST接口
Read timed out报错解决方案 问题本质
这个java.net.SocketTimeoutException: Read timed out报错是JMeter在等待服务端返回响应的过程中,超出了设置的读取超时时间导致连接中断,从提供的堆栈日志可以看出,异常发生在读取服务端返回的分块编码响应阶段,不属于连接建立阶段的异常。
解决方案
- 优先验证接口本身的处理耗时
用Postman、curl等工具传入和JMeter完全一致的请求头、请求体参数调用该POST接口,统计接口实际返回的总耗时。如果确实超过你设置的60秒,直接调整JMeter超时配置:打开对应HTTP请求采样器的「高级」标签,将「响应超时(毫秒)」的数值调整为大于接口实际耗时的值即可,比如接口需要75秒返回,可设置为80000。如果你的超时配置是写在HTTP请求默认值组件里,同步修改该组件的超时配置即可。 - 校验JMeter请求配置正确性
如果第三方工具调用接口耗时远低于60秒,逐一核对JMeter的请求配置和可正常调用的工具配置是否完全一致:包括请求头的Content-Type、鉴权信息、Cookie值,POST请求体的格式(form-data/raw/json等)、参数编码规则,绝大多数场景下是JMeter请求参数有误导致服务端逻辑卡住,无法正常返回响应。 - 排查网络链路问题
在JMeter所在机器执行网络校验命令:- 用
ping 服务端IP/域名检查是否存在丢包情况 - 用
telnet 服务端IP/域名 端口确认端口连通性正常 - 跨公网调用的场景下用路由追踪命令检查链路是否存在高延迟节点
- 用
- 切换HTTP客户端实现
打开HTTP请求采样器的「高级」标签,将「实现」选项在HttpClient4和Java两个选项之间切换测试,部分场景下不同HTTP客户端对分块响应的兼容性差异会导致读取超时问题。 - 校验服务端拦截策略
确认服务端的防火墙、WAF、限流规则是否将JMeter所在机器的IP加入了拦截/限流名单,被拦截的请求经常会出现无响应导致读超时的情况。
内容的提问来源于stack exchange,提问作者Ganesh Pethkar
相关产品推荐
相关产品推荐

