I am having some trouble understanding how ArcGIS Server Manager defines "Timeouts", specifically in the stats view vs "Expired" services in the Logs.
My confusion: All our services use the default timeout value specified in the pooling tab of the Service: 60 seconds. I've experienced requests timeout in our apps and in our ArcGIS Server Error Logging I can see corresponding logs for these. The Error says:
"Error performing query operation. Wait time of the request to the service [service name] has expired"
However if I look at the Stats view, ArcGIS Server tells me that:
There are zero incidents of service timeouts:

And more confusingly, if I go to look at the "Maximum Response Time (Seconds)", I see that ArcGIS Server reports that it is spending 3-4 minutes services requests:
Maximum Response Time well above 60 seconds
What is going on here? What is the distinction ArcGIS Server is making here? I would expect to:
- Never see a maximum response time above 60 seconds
- See timeout statistics corresponding to instances of "expired" services in Logs. Isn't an "expired" service, a result of a service request taking over 60 seconds (essentially a timeout?)
I've tried looking for guidance, clarification in ArcGIS Server documentation (ex here) but have not found anything.
Additional Notes:
- We are not (to my knowledge) using geoprocessing services, or exporting data via ArcGIS Server. There may be instances of occasional accessing of services via ArcGIS Desktop, but they are primarily accessed via ArcGIS JavaScript API Web Applications.
- We are using ArcGIS Server 10.71
- We use an NGinx proxy server which also has configuration for timeouts but I believe they are overridden to be above 60 seconds.
- We are seeing these timeouts in the app both in draw operations of layers within the service and in query operations to the service from ArcGIS JavaScript API. Interestingly, the query calls that timeout don't seem to appear in the logs of ArcGIS Server. (Still investigating). We even override the requestOptions to ensure that clientside the request will wait beyond 60 seconds:
let queryTask = new QueryTask({
url: baseUrl,
requestOptions: {timeout: 180000}, //allow app to wait for 180 seconds before giving up
});