请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

nginx request_time很大但upstream_response_time为0

最近线上nginx经常出现502,但后台的tomcat没有收到对应的请求(通过tomcat的访问日志没有找到对应的请求),发现nginx的access日志中很多 request_time 和我配置的超时时间一致,但upstream_response_time为0,日志配置及错误请求如下,问下老师有可能的原因是什么,可以通过哪些日志来定位(不是所有的请求都是这样,只是有部分请求会这样,我再次去请求时又会返回 200正常)

'$status $bytes_sent $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for" $request_time - $upstream_response_time';


#nginx access 错误日志
502 717 537 "-" "Jakarta Commons-HttpClient/3.1" "-" 3600.000 - 3600.001, 0.000
502 717 537 "-" "Jakarta Commons-HttpClient/3.1" "-" 3600.000 - 3600.001, 0.000




正在回答 回答被采纳积分+3

1回答

Jeson 2018-08-24 20:24:35

是一个问题吗?我觉得你还要分析下Nginx中error的日志,502是bad gateway,这个可能你的后台服务直接出问题了,或者说进程直接挂了都可能造成这样的情况。

0 回复 有任何疑惑可以回复我~
  • 提问者 目科将 #1
    我测试后台服务是正常的,1,直接请求tomcat是没有问题的,2.相同的请求(报502的请求)我再次通过域名(走ngInx)也是没有问题的,原来的理解+怀疑是:request_time 超时,但upstream_response_time为0,是因为nginx自身什么原因,请求没有发送到后台或是在将请求转发给后台服务之前就已经超时了,基于上面的逻辑我找了下error的错误,发现和缓存配置相关,但我不确定这个配置改成几十M会有什么影响,另一个有可能我没有找到真正的原因
    回复 有任何疑惑可以回复我~ 2018-08-24 20:38:53
  • 提问者 目科将 #2
    补充: 因为没有在后台的tomcat的服务中找到对应的请求, 说明后台服务是没有收到这个请求的,也就是说  (1)客户-->(2)nginx(有请求日志)-->(3)upstream-->(4)后端服务器-->(5)后端服务器的tomcat服务, 现在是2有日志,5没有日志, 可能出现问题是在3,4, 3 没有收到应该是nginx本身的原因(但这个除了看nginx error日志我不清楚还可以怎么定位),4的话 我当时怀疑是不是防火墙或是服务器tcp连接数过高导致的,所以我查看了下 后台服务器的系统日志及当时的tcp连接数 都是正常的,所以现在不是很思路, 另和产品确认有无业务变更, api 有一个下载文件(20多M)从http改成https了;
    回复 有任何疑惑可以回复我~ 2018-08-24 20:50:39
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信