limit_req_module постоянно в 503

Igor Sysoev is at rambler-co.ru
Mon Dec 15 13:41:01 MSK 2008


On Mon, Dec 15, 2008 at 02:28:28AM +0300, Maxim Dounin wrote:

> On Sun, Dec 14, 2008 at 02:38:35PM +0300, Igor Sysoev wrote:
> 
> > On Sun, Dec 14, 2008 at 12:24:38PM +0100, Alrond wrote:
> > 
> > > обнаружил при тестировании что при использовании limit_req_module
> > > и обычных параметрах как в примере интересный эффект возникает.
> > > Тестировал только при ограничении rate=1r/s
> > > Если просто браузером рефрешить, то все нормально, в зависимости от скорости
> > > нажатий выдает некоторое количество страниц с кодом 503, но если запустить,
> > > например, "ab -n1000", то состояние 503 не уходит потом долго после теста, я
> > > честно говоря даже дождаться не мог.
> > > так было задумано (очередь?) или это ошибка?
> > 
> > 1000 запросов со скоростью 1r/s можно сделать только за 16 с лишним минут.
> > Вот на 16 минут адрес и блокируется.
> 
> Ну вообще говоря это не соответсвует заявленному leaky bucket.
> 
> Запросы, не поместившиеся в ведро, на дальнейшее опустошение этого 
> ведра влиять не могут - ибо их там нет.

Возможно. Сейчас алгоритм такой:

     excess = 1 + excess - rate * (now - last)

     if excess < 0
        excess = 0

     сохраняем excess и время

     if excess > burst
        503

     if excess
        if nodelay
            503
        else
            задержка на excess


-- 
Игорь Сысоев
http://sysoev.ru





More information about the nginx-ru mailing list