JMeter(5.5)调用Nginx部署API返回502错误求助
JMeter调用Nginx部署的API返回502错误
问题概述
应用部署在Nginx上,使用JMeter 5.5调用API时收到502状态码,但同一主机上用curl、Postman等工具调用正常,Nginx日志无相关错误记录,测试主机可正常ping通目标主机。
JMeter采样器结果
Thread Name:Thread Group 1-1 Sample Start:2022-07-21 18:39:47 IST Load time:31316 Connect Time:4 Latency:31316 Size in bytes:151 Sent bytes:118 Headers size in bytes:151 Body size in bytes:0 Sample Count:1 Error Count:1 Data type ("text"|"bin"|""): Response code:502 Response message:Could not relay message upstream HTTPSampleResult fields: ContentType: DataEncoding: null
响应信息
HTTP/1.1 502 Could not relay message upstream Date: Fri, 22 Jul 2022 03:42:26 GMT Content-Length: 0 Connection: close Via: HTTP/1.1 m_proxy_sin
系统详情
OS : Windows 10 C:\Desktop>java --version openjdk 11.0.15 2022-04-19 OpenJDK Runtime Environment OpenLogic-OpenJDK (build 11.0.15+10-adhoc..jdk11u) OpenJDK 64-Bit Server VM OpenLogic-OpenJDK (build 11.0.15+10-adhoc..jdk11u, mixed mode) JMeter - 5.5
JMeter日志
2022-07-25 16:25:47,348 INFO o.a.j.s.SampleEvent: List of sample_variables: [] 2022-07-25 16:25:47,351 INFO o.a.j.g.u.JMeterMenuBar: setRunning(true, *local*) 2022-07-25 16:25:47,354 INFO o.a.j.e.StandardJMeterEngine: Starting ThreadGroup: 1 : Thread Group 2022-07-25 16:25:47,354 INFO o.a.j.e.StandardJMeterEngine: Starting 1 threads for group Thread Group. 2022-07-25 16:25:47,354 INFO o.a.j.e.StandardJMeterEngine: Thread will continue on error 2022-07-25 16:25:47,354 INFO o.a.j.t.ThreadGroup: Starting thread group... number=1 threads=1 ramp-up=1 delayedStart=false 2022-07-25 16:25:47,354 INFO o.a.j.t.ThreadGroup: Started thread group number 1 2022-07-25 16:25:47,354 INFO o.a.j.e.StandardJMeterEngine: All thread groups have been started 2022-07-25 16:25:47,369 INFO o.a.j.t.JMeterThread: Thread started: Thread Group 1-1 2022-07-25 16:26:18,057 INFO o.a.j.t.JMeterThread: Thread is done: Thread Group 1-1 2022-07-25 16:26:18,057 INFO o.a.j.t.JMeterThread: Thread finished: Thread Group 1-1 2022-07-25 16:26:18,057 INFO o.a.j.e.StandardJMeterEngine: Notifying test listeners of end of test 2022-07-25 16:26:18,057 INFO o.a.j.g.u.JMeterMenuBar: setRunning(false, *local*)
排查与解决建议
- 核对代理配置:响应头的
Via字段显示请求经过代理m_proxy_sin,curl/Postman可能已自动适配系统代理,但JMeter未配置。可在JMeter的选项 > HTTP代理服务器中设置匹配的代理信息,或在测试计划中添加http.proxyHost、http.proxyPort变量;若无需代理,在system.properties中添加http.nonProxyHosts=目标主机地址排除代理。 - 对比请求头差异:JMeter与其他工具的请求头可能不一致,导致上游拒绝处理。用
查看结果树导出JMeter的请求头,用curl模拟相同请求头调用API,若出现502则在JMeter采样器中补充缺失的请求头(如Host、User-Agent)。 - 调整Java网络参数:编辑
jmeter.bat,添加JVM参数指定代理:set JVM_ARGS=-Dhttp.proxyHost=m_proxy_sin -Dhttp.proxyPort=代理端口(HTTPS需额外添加对应代理参数),确保Java网络配置与系统一致。 - 检查上游服务器日志:Nginx无错误但返回502,大概率是上游应用未正确接收请求,查看应用服务器日志是否有JMeter请求的拒绝或错误记录。
- 延长超时时间:采样器显示加载时间达31秒,接近默认超时,在HTTP请求采样器中增大
连接超时和响应超时值,避免超时导致的转发失败。
内容的提问来源于stack exchange,提问作者user2264738
相关产品推荐
相关产品推荐

