Looking at the nginx log, I found that sometimes $upstream_response_time
is particularly long, such as 179.839
seconds, but the corresponding timeout of the backend tomcat configuration is 20
seconds. Then why is there such a long upstream_response_time
?
$upstream_response_time
keeps time spent on receiving the response from the upstream server; the time is kept in seconds with millisecond resolution.
tomcat configuration
<Connector port="XXX"
address="XXX"
protocol="org.apache.coyote.http11.Http11NioProtocol"
connectionTimeout="20000" # 超时时间20秒
redirectPort="8443"
maxThreads="500"
minSpareThreads="20"
acceptCount="1024000"
disableUploadTimeout="true"
enableLookups="false"
URIEncoding="UTF-8" />
connectionTimeout
The number of milliseconds this Connector will wait, after accepting a connection, for the request URI line to be presented. Use a value of -1 to indicate no (i.e. infinite) timeout.
nginx log shows milliseconds. Did you get the time unit wrong?