патч для nginx/win32

Илья Шипицин chipitsine at gmail.com
Tue Mar 26 11:03:30 UTC 2013


Добрый день!

мы достаточно плотно используем nginx для Windows, запускаем его через
назначенное задание (scheduled tasks). Для этого в конфиге надо сделать
"daemon off" и дальше менеджер заданий следит за мастер-процессом,
запущенным на терминале.

это, кстати, удобнее, чем служба Windows (вообще, назначенные задания более
удобны и мы чаще используем их, чем службы).

в этом сценарии есть один недостаток, при завершении мастер-процесса,
остается запущенный worker-процесс.

насколько я понял, в случае Windows это штатная ситуация (при такой работе
с процессами, которая используется в nginx), для исправления предлагаю
такой патч (сделан для 1.3.14):

--- src/os/win32/ngx_process_cycle.c    2013-03-26 16:57:20.000000000 +0600
+++ src/os/win32/ngx_process_cycle.c.new        2013-03-26
16:57:00.987341331 +0600
@@ -303,6 +303,8 @@
 ngx_console_handler(u_long type)
 {
     char  *msg;
+       ngx_cycle_t       *cycle;
+    cycle = (ngx_cycle_t *) ngx_cycle;

     switch (type) {

@@ -316,6 +318,7 @@

     case CTRL_CLOSE_EVENT:
         msg = "console closing, exiting";
+               ngx_terminate_worker_processes(cycle);
         break;

     case CTRL_LOGOFF_EVENT:


Илья Шипицин
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.nginx.org/pipermail/nginx-ru/attachments/20130326/a75e2d94/attachment.html>


Подробная информация о списке рассылки nginx-ru