Hey Igor,
On Wed, Dec 10, 2008 at 6:32 PM, Igor S. [email protected] wrote:
On Wed, Dec 10, 2008 at 05:36:22PM +1100, Omar Kilani wrote:
I’ve recently started using the new limit_req module in nginx 0.7 to
try to throttle requests to the API of our web service.
We’ve been having some issues in that ‘delayed’ requests seem to be
returned with a 503 HTTP response header, but with the correct body
(the limit_req is under a ‘location’ block with proxy_pass).
The 503 response should have special body.
Okay, then I have a strange issue.
Basically, when the nginx error.log says a request is ‘delayed’, nginx
will sometimes output a 503 HTTP response code but with the same body
as a 200 (the request goes to the backend, and the backend response is
sent to the client).
When nginx error.log says a request is ‘limited’, then I’m getting a
503 + the 503 error (and the request doesn’t go to the backend) as
expected.
My intention is to limit requests to an average of 1 request a second,
burstable to 5 requests, and supporting delaying requests until
they’re within that 1 request / second threshold.
Is the 503 response a known issue?
limit_req delays excess request until they wil be more than burst value.
This means that if you send 6 simultaneous requests, then 1 will be
processed, next 4 will be delayed for 1s, 2s, 3, and 4s, and 6th will be
reject with 503 code.
Great, that’s what I expected.
BTW, have you seen any issues with truncated output of ‘delayed’
responses when using limit_req?
We’ve had a (admittedly low) number of requests which return a
truncated body. These are logged in error.log as a client timeout, so
it may just be that.
I personally haven’t been able to reproduce these, so it could be some
weird interaction with a particular HTTP library/client.
Also, could you tell me how to test this particular configuration to
make sure it’s correct?
I’ve tried ab/http_load/siege, etc.
–
Igor S.
http://sysoev.ru/en/
Regards,
Omar