Client Timed Out

Maxim Dounin mdounin at mdounin.ru
Sun May 24 02:26:54 MSD 2009


Hello!

On Fri, May 22, 2009 at 06:07:27PM +0200, Sergey Bondari wrote:

> Все доброго дня,
> 
>     Поступила жалоба от клиента что иногда обрывается коннект при
>     просмотре FLV видео. Удалось несколько раз воспроизвести, но
>     никакого детерминизма не обнаружилось. Просто кликаешь кликаешь по
>     сайту и вдруг раз в 100 кликов действительно видео обрывается на 1
>     или 2 секунде просмотра (никогда дольше).
> 
>     Видел что тут по пролетали посты с подобной проблемой, но там
>     вроде как дебаг лог не создали.
> 
>     nginx/0.7.46 на генту с патчем от Максима Дунина против проблем с
>     обрывом соединений у limit_req

[...]

Старый патч откатить, новый накатить.

Maxim Dounin
-------------- 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
@@ -263,8 +263,23 @@ done:
 static void
 ngx_http_limit_req_delay(ngx_http_request_t *r)
 {
+    ngx_event_t  *wev;
+
     ngx_log_debug0(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
-                  "limit_req delay");
+                  "limit_req delay patched 2");
+
+    wev = r->connection->write;
+
+    if (!wev->timedout) {
+
+        if (ngx_handle_write_event(wev, 0) != NGX_OK) {
+            ngx_http_finalize_request(r, NGX_HTTP_INTERNAL_SERVER_ERROR);
+        }
+
+        return;
+    }
+
+    wev->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