ПРОЕКТЫ 


  АРХИВ 


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[8]: `



On Thu, 11 Jan 2007, Igor Savchenko wrote:

Идея такая - перловый хендлер на начало соединения вешается
(вычисление какой-то переменной, побочный эффект - где-то сделать
пометку о начале соединения), а конец отслеживается по появлению
записи в логе.

Да, можно так.

Постоянно читать логи, обрабатывать.. почти в режиме риалтайма. При
том что конеектов будет по несколько сотен на несколько сотен
виртуалхостов.

Эти несколько сотен коннектов - на все виртуальные сервера?

Или на каждый? Тогда получаем десятки тысяч соединений с сервером.

И с учетом того что ресурсы и так все под завязку, то
это вообще получается какая-то аццкая мегамашина, для решения этой
задачи. Всеже с двумя хендлерами вариант самый помоему удачный и
простой. Перловый хендлер ложит инфу в базу... после этого post_action
и другой перловый хендлер удаляет  инфу из нее.

В случае, если у вас всё же десятки тысяч соединений с сервером, такая конструкция врядли будет работать - потому что, как написано Игорем на http://sysoev.ru/nginx/docs/http/ngx_http_perl_module.html#bugs :

Если perl'овый модуль выполняет длительную операцию, например, определяет адрес по имени, соединяется с другим сервером, делает запрос к базе данных, то на это время все остальные запросы данного рабочего процесса не будут обрабатываться.


Вариант от Alexey Polyakov - X-Accel-Redirect + post_action -
мне кажется более жизнеспособным. Потому что общением с БД будет заниматься другой процесс.


--
Best regards,
Andrew Kopeyko <kaa@xxxxxxxx>
http://www.zvuki.ru/ sysadmin




 




Copyright © Lexa Software, 1996-2009.