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