ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Client Timed Out



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
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);


 




Copyright © Lexa Software, 1996-2009.