Welcome! Log In Create A New Profile

Advanced

Re: limit_req_zone and limit_req: rate too strict

Bruno Prémont
April 06, 2012 03:40PM
On Fri, 06 April 2012 "Valentin V. Bartenev" <ne@vbart.ru> wrote:
> On Friday 06 April 2012 17:24:52 Bruno Prémont wrote:
> > Hi,
> >
> > I have started using limit_req_zone + limit_req but am seeing more delayed
> > log entries than I would expect.
> >
> > I have the following:
> >
> > limit_req_zone $binary_remote_addr zone=one:10m rate=3r/s;
> > ...
> > server {
> > ...
> > location ~ .*\.php$ {
> > limit_req zone=one burst=10;
> > ...
> > }
> >
> >
> > In the logs I see that when 2 requests happen near simultaneously from the
> > same IP address (e.g. page redirect to second PHP page or single
> > PHP-generated image referenced by page) the second and third request get
> > delayed if they arrive too early during the same second.
> >
> >
> > I would wish to limit the user to 3 requests within a 1s window though
> > not setting any constraint as to spacing between those requests, how can I
> > accomplish it or what changes to limit_req module would be needed to
> > not have a minimum 0.33s spacing between requests for above configuration?
> >
>
> http://nginx.org/r/limit_req
>
> limit_req zone=one burst=10 nodelay;

In that case legitimate (from my point of view) requests get rejected
which is even worse!

I wish those that fall under rate to not be delayed to get nice distribution
(in my case 1s sample-rate!), but to have those between rate and burst being
delayed to the following seconds.

As an example of what I expect (rate=3r/s, burst=5):
Time Request Id
0.0s 1 initial request
0.1s 2 second request, should not get delayed
0.1s 3 third request, should not get delayed
3.5s 4 new initial request
3.6s 5 new second request, should not get delayed
3.7s 6 new third request, should not get delayed
3.8s 7 new fourth request, should get delayed until t=4.6s
3.9s 8 new fifth request, should get delayed until t=4.7s
4.0s 9 new sixth request, should get delayed until t=4.8s
4.1s 10 new seventh request, should get delayed until t=5.6s
4.2s 11 new eighth request, should get delayed until t=5.7s
4.3s 12 new ninth request, should get rejected with 503 (exceeds burst)
4.4s 13 new tenth request, should get rejected with 503 (exceeds burst)

but I do get like:
0.0s 1 initial request
0.1s 2 second request, delayed until 0.33s
0.1s 3 third request, delayed until 0.66s

Bruno

_______________________________________________
nginx mailing list
nginx@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx
Subject Author Posted

limit_req_zone and limit_req: rate too strict

Bruno Prémont April 06, 2012 09:26AM

Re: limit_req_zone and limit_req: rate too strict

Valentin V. Bartenev April 06, 2012 12:08PM

Re: limit_req_zone and limit_req: rate too strict

Bruno Prémont April 06, 2012 03:40PM

Re: limit_req_zone and limit_req: rate too strict

Valentin V. Bartenev April 06, 2012 04:58PM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 145
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready