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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 15:24:21