Version 4.5.13¶
Version 4.5.13 of mod_wsgi can be obtained from:
New Features¶
Added
response-socket-timeout
option toWSGIDaemonProcess
directive to allow the timeout on writes back to HTTP client from Apache child worker process, when proxying responses from a mod_wsgi daemon process, to be separately overridden. Previously this would use the value of the ApacheTimeout
directive. With this change the timeout will be based onresponse-socket-timeout
option. If that is not set it will use the the generalsocket-timeout
option and if that isn’t set only then will the value of the ApacheTimeout
directive be used.The overall purpose of being able to separately control this option is to combat against HTTP clients that never read the response, causing the response buffer when proxying to fill up, which in turn can cause the request thread in the daemon process to block. The default high value of the Apache
Timeout
directive, at 300 seconds meant it could take a while to clear, and if the mod_wsgi daemon processes were configured with a low total number of request threads, the whole WSGI application could block if this occurred for many requests at the same time.When using
mod_wsgi-express
the option can be set using the command line--response-socket-timeout
option. If usingmod_wsgi-express
the default socket timeout is 60 seconds so the issue would not have had as big an impact, especially sincemod_wsgi-express
also defines a default request timeout of 60 seconds, which would have resulted in the daemon process being restarted if the request had blocked in returning the response.An additional error message is also now logged to indicate that failure to proxy the response content was due to a socket timeout. This will help to indentify where problems are due to a blocked connection or slow client.