nginx 0.7 and limit_req

Omar Kilani omar.kilani at gmail.com
Wed Dec 10 11:28:22 MSK 2008


Hey Igor,

On Wed, Dec 10, 2008 at 6:32 PM, Igor Sysoev <is at rambler-co.ru> 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.

>> The configuration is:
>>
>> limit_req_zone  $binary_remote_addr  zone=api_one:10m   rate=1r/s;
>>
>> location /services/rest {
>>     limit_req zone=api_one burst=5;
>>     proxy_pass http://rtm_api;
>>     ...
>> }
>>
>> 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 Sysoev
> http://sysoev.ru/en/

Regards,
Omar





More information about the nginx mailing list