Resolving Intermittently Timed-Out Inbound SOAP Requests
SOAP requests made to a ServiceNow instance time out.
SOAP requests to the ServiceNow instance time out intermittently. The requests return a timeout response or a 408 status code.
Timeouts can occur at these stages of the transaction:
- Load balancer: A load balancer kills connections with no active traffic or connections that have been running for longer than 300 seconds. A timeout at the load balancer level usually returns no response.
- Tomcat server: The Tomcat server kills inactive sessions. By default, ServiceNow sets the maximum Tomcat timeout to 60 seconds.
- Application: The SOAP transaction triggers a timeout or redirect if the SOAP thread takes too long to complete. By default, the transaction times out after 175 seconds. A timeout at the application level usually results in a 408 response code.
- The query on the instance takes a long time to return the data leading to no traffic
- All Semaphores are in use and the SOAP transaction is waiting for the next available Semaphore forcing the request to wait
- Multiple SOAP transactions are running with the same user session. ServiceNow allows only one transaction at a time per session and forces subsequent requests to wait
Modify the timeout settings using properties:
- Override the Tomcat timeout: glide.soap.invalidate_session_timeout or glide.soap.invalidate_session_timeout.odbc when using the ODBC Driver.
- Override the SOAP transaction time limit: glide.soap.request_processing_timeout or glide.soap.request_processing_timeout.odbc when using the ODBC Driver. These properties default to 175 seconds, determined by the value of the glide.http.timeout property, divided by 100.
If setting these properties does not resolve the issue, additional configuration options are detailed on the product documentation page Long-Running SOAP Request Support Wiki documentation.