Отловить момент, когда закачка завершена

Igor Sysoev is at rambler-co.ru
Sat Feb 11 13:46:43 MSK 2006


On Sat, 11 Feb 2006, AleXXX V. NovikoFF wrote:

>> On Fri, 10 Feb 2006, AleXXX V. NovikoFF wrote:
>>
>>>> В том месте можно вызывать ngx_http_finalize_request().
>>>> В общем, нужно смотреть все места, откуда в нужно вызывать post_action.
>>>> Но ngx_http_close_request() - это не то место, где нужно вызывать
>>>> post_action.
>>>
>>> в общем сделал я, что хотел :) аж глаз радуется))
>>> вопрос такой, можно ли как-то насильно остановить текущую сессию?
>>> речь идет о черных списках, например человек попал в такой список, и
>>> текущую закачку нужно остановить, куда копать?
>>
>> Никак.
>>
>> X-Accel-Limit-Rate заработал или нет ?
>>
>
> Нет.

Да, для запросов, обрабатываемых через X-Accel-Redirect, X-Accel-Limit-Rate
терялся, прилагаемый патч лечит это.

> Мало того, появился глюк,
> директива limit_rate прекрасно резала скорость, а тут что-то случилось
> ночью, ( картинка: http://alexxx.ru/tmp/nginx_status_day.png ) после
> чего скорость у всех стала одинаковой...(неограниченной) количество
> процессов не изменилось, PID-ы все теже...

Кто открыл 1300 соединений. Про скорость по этому графику можно судить
только ксовенно. Обычно скачок в числе соединений сопровождается уменьшением
скорости.

> в error_log сразу после скачка (который на картинке) все время
> проскакивали такие записи:
>
> 2006/02/11 07:00:56 [alert] 11773#0: accept() failed (24: Too many open files) while accepting new connection on 195.208.234.158:80
>
> потом сами собой пропали... (около 7 часов как раз у меня релоад
> делается и logrotate там nginx посылается -USR1)
>
> куда копать? где зарылся баг?

Увечить число откртых файлов - worker_rlimit_nofile.


Игорь Сысоев
http://sysoev.ru
-------------- next part --------------
--- src/http/ngx_http_core_module.c	Mon Feb  6 17:11:02 2006
+++ src/http/ngx_http_core_module.c	Sat Feb 11 13:21:28 2006
@@ -747,7 +747,9 @@
         r->connection->tcp_nopush = NGX_TCP_NOPUSH_DISABLED;
     }
 
-    r->limit_rate = clcf->limit_rate;
+    if (r->limit_rate == 0) {
+        r->limit_rate = clcf->limit_rate;
+    }
 
     if (clcf->handler) {
         r->content_handler = clcf->handler;


More information about the nginx-ru mailing list