On 2012-06-25 14:42, Rajalakshmi Iyer wrote:
Hello,
I am working on an Apache module where the response times for each request
are very stringent. I want to be able to return a custom error deck in case
I am not able to process the request within the threshold instead of a
timeout response. I have added a check in the request handler code to check
if a threshold time has elapsed and return a custom error in that case.
However it appears that this code is not invoked at all for most requests.
From what I see in Apache code, the request / response is actually
synchronous. So the next request is not read in until the response for the
first one is sent out.
Yes, it is synchronous _at thread level_, i.e. each thread must finish
processing its request before it is able to process a new one. But the
server has several threads.
So, if a previous request takes a longer time, the response times for
subsequent requests is affected.
No, subsequent requests are taken up by other threads/processes of the
server.
Any guidelines on how to handle this would be greatly appreciated.
It depends on what is eating up the response time and on the granularity
of the timeout.
*) If it's processing time on the server, you'll need a timer (see for
example boost::asio::deadline_timer).
*) If it's a the response of a backend server you are waiting on then
the timeout mechanism depends on the way in which the request is made to
the backend. If you're using mod_proxy, then you could use the timeout
directive of ProxyPass if its coarse granularity suits your
requirements. I suppose other http client libs have their own way to
specify timeouts.
Sorin