проблема с limit_req - client timed out
Maxim Dounin
mdounin at mdounin.ru
Thu Mar 26 14:46:43 MSK 2009
Hello!
On Wed, Mar 25, 2009 at 07:34:17PM +0100, Sergey Bondari wrote:
> Hello nginx-ru,
>
> При включении limit_req nginx 0.7.43 и 0.7.38 (на других не
> тестировалось) внештатно обрывает соединение с клиентом.
>
> Установлено на 30 реквестов за 60 секунд.
>
> В приложении отладочные логи, TCP логи из Wireshark, терминал
> логи.
В приложении нет отладочных логов, для получения отладочных логов
необходимо пересобрать nginx, указав ./configure ключ
--with-debug. В логе должны появится строки с '[debug]'.
Судя по
2009/03/25 14:21:55 [warn] 28837#0: *17 delaying request, excess: 0.999, by zone "spire", client: 82.208.43.89, server: www.tanita.com, request: "GET /en/ HTTP/1.0", host: "www.tanita.com"
2009/03/25 14:21:56 [info] 28837#0: *15 client 82.208.43.89 closed keepalive connection
2009/03/25 14:21:57 [info] 28837#0: *17 client timed out (110: Connection timed out) while sending to client, client: 82.208.43.89, server: www.tanita.com, request: "GET /en/ HTTP/1.0", upstream: "http://192.168.1.169:80/en/", host: "www.tanita.com"
срабатывает таймаут на отправку данных клиенту. Возможно он
слишком мал, и задержка от limit_req приводит к этому.
Если вы хотите только отсекать запросы сверх определённой частоты,
но не заставлять клиентов ждать - используйте limit_req ...
nowait.
И не забывайте, что задание limit_req без указания burst смысла не
имеет.
Maxim Dounin
More information about the nginx-ru
mailing list