проблема с limit_req - client timed out

Maxim Dounin mdounin at mdounin.ru
Mon Mar 30 15:03:52 MSD 2009


Hello!

On Mon, Mar 30, 2009 at 01:46:39PM +0400, Phil Kulin wrote:

> 30 марта 2009 г. 13:37 пользователь Maxim Dounin <mdounin at mdounin.ru> написал:
> 
> >> Не помогло. Стоит nginx из fbsd портов 0.7.42. Запросы проксируются.
> > Ты уверен что патч наложился и не перезатёрся очередным make
> > extract'ом?  И работает бинарник с патчем?
> 
> Да, перепроверил. Патч клал уже после make patch и зашёл поглядел.
> Да, работает тот самый - посмотрел на дату бинарника.

Надо бы ещё убедиться что новый бинарник действительно запущен, а 
не просто на диске лежит.  Но проще приложить новый патч и сделать 
debug log.

> Смотри, образно - первый раз словил 503 и ты перестаёшь быть белым человеком.
> Тебе всё сразу срубает. Такое впечатление, что он там что-то куда-то
> какие-то лимиты шмякает и потом просто не выходит из них. Могу собрать
> с дебагом, ошибка чётко повторяется. Могу руками попробовать 0.7.45.
> Просто не прямо сейчас наверное. Надо?
> 
> Причём, проверял -  "белый экран" только у "виновника", до первой 503
> у остальных всё тип-топ.

Т.е. проблема только у тех, кто уже получил 503?  Это что-то 
новое.  Патч исправляет проблему, которая у всех кого задерживали, 
если ответ не влезает в tcp-буфера системы.  Вне зависимости от 
предыдущих/последующих 503.

Сделай пожалуйста debug log с прилагающимся патчем (то же, + 
однозначная различимость с коробочной версией).  Версию менять не 
обязательно.

Maxim Dounin


> 
> >> Очень характерный лог:
> >> 2009/03/30 10:43:19 [warn] 10021#0: *33551 delaying request, excess:
> >> 8.420, by zone "cookie", client: 94.25.155.4, server: umi-cms.ru,
> >> request: "GET / HTTP/1.1
> >> ", host: "www.umi-cms.ru"
> >> 2009/03/30 10:43:20 [error] 10021#0: *33555 limiting requests, excess:
> >> 10.230 by zone "cookie", client: 94.25.155.4, server: umi-cms.ru,
> >> request: "GET / HTTP/1
> >> .1", host: "www.umi-cms.ru"
> >> 2009/03/30 10:43:35 [info] 10021#0: *33551 client timed out (60:
> >> Operation timed out) while sending to client, client: 94.25.155.4,
> >> server: umi-cms.ru, request
> >> : "GET / HTTP/1.1", upstream: "http://127.0.0.1:80/", host: "www.umi-cms.ru"
> >>
> >> Я со своей стороны вижу белый экран.
> >> Если пожать F5 - вылезает 503, потом опять белый экран.
> >> Ни о каких 60-ти секундах вроде речь не идёт? Такое впечатление, что
> >> просто выбранный элемент limit_req_zone перестаёт проксироваться.
> >>
> >> --
> >> Non nobis Domine non nobis sed Nomini Tuo da gloriam
> >> Phil Kulin
> >
> >
> 
> 
> 
> -- 
> Non nobis Domine non nobis sed Nomini Tuo da gloriam
> Phil Kulin
-------------- next part --------------
diff --git a/src/http/modules/ngx_http_limit_req_module.c b/src/http/modules/ngx_http_limit_req_module.c
--- a/src/http/modules/ngx_http_limit_req_module.c
+++ b/src/http/modules/ngx_http_limit_req_module.c
@@ -260,7 +260,9 @@ static void
 ngx_http_limit_req_delay(ngx_http_request_t *r)
 {
     ngx_log_debug0(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
-                  "limit_req delay");
+                  "limit_req delay patched");
+
+    r->connection->write->timedout = 0;
 
     if (ngx_handle_read_event(r->connection->read, 0) != NGX_OK) {
         ngx_http_finalize_request(r, NGX_HTTP_INTERNAL_SERVER_ERROR);


More information about the nginx-ru mailing list