Re: Не запускается: "ngx master xxx" was not signaled for 5s

Maxim Dounin mdounin at mdounin.ru
Fri Dec 28 01:49:45 UTC 2012


Hello!

On Thu, Dec 27, 2012 at 02:08:13PM -0500, max2013 wrote:

> Запостил баг: http://trac.nginx.org/nginx/ticket/265
> 
> Когда исправят этот баг не известно, потому прошу помощи у специалиста - кто
> сможет перекомпилить Nginx под винду? Либо же подскажите адрес где можно
> найти подробную инструкцию по сборке Nginx для Windows, я тогда сам исправлю
> таймаут и пересоберу nginx.

http://nginx.org/en/docs/howto_build_on_win32.html

> Описание бага:
> 
> Баг - невозможность старта и соответственно использования всех версий Nginx
> на Windows машинах при большом количестве SSL доменов в файле конфигурации.
> 
> Проверены версии 1.2.x и 1.3.x, на других версиях думаю то же самое.
> Проверены конфигурации SSL - дефолтная из документации, своя и еще куча
> всяких возможных. SSL key были использованы обычные без пароля, полностью
> корректные и рабочие (при малом количестве доменов). Конфигурация SSL не
> имеет значения, мощность Windows сервера так же не имеет значения - проблема
> везде идентична и упирается в таймаут. Важен сам факт использования SSL (ssl
> on) и количество доменов.
> 
> При использовании SSL и кол-ве доменов больше ~1300 сервер Nginx не
> запускается с ошибкой: the event "ngx_master_xxx" was not signaled for 5s
> Без использования SSL в конфиге сервер стартует даже с 10 тыс. доменов и
> проблема не наблюдается. 
> 
> Проблема заключается скорее всего тут (жёстко прописан таймаут):
> http://trac.nginx.org/nginx/browser/nginx/trunk/src/os/win32/ngx_process.c
> Строка 87: rc = WaitForMultipleObjects(2, events, 0, 5000);
> 
> и потом строки 
> 
> 146        case WAIT_TIMEOUT:case WAIT_TIMEOUT:
> 147	        ngx_log_error(NGX_LOG_ALERT, cycle->log, 0,
> 148	                      "the event \"%s\" was not signaled for 5s",
> 149	                      ngx_master_process_event_name);
> 
> Просьба исправить этот критический баг. Сервер просто невозможно
> использовать. Таймаут должен быть настраиваемым, либо сделайте его очень
> большим. Либо исправьте SSL, чтобы он не тормозил запуск. 

Я снесняюсь спросить - а что заставляет использовать бету с кучей 
известных ограничений (http://nginx.org/ru/docs/windows.html) для 
работы с тысячами доменов, да ещё и по ssl?

Что до "исправьте SSL", то попробуйте вот такой патч.  Untested, 
но должен немного улучшить ситуацию:
 
diff --git a/src/event/ngx_event_openssl.c 
b/src/event/ngx_event_openssl.c
--- a/src/event/ngx_event_openssl.c
+++ b/src/event/ngx_event_openssl.c
@@ -643,10 +643,10 @@ ngx_ssl_ecdh_curve(ngx_conf_t *cf, ngx_s
         return NGX_ERROR;
     }
 
+    SSL_CTX_set_options(ssl->ctx, SSL_OP_SINGLE_ECDH_USE);
+
     SSL_CTX_set_tmp_ecdh(ssl->ctx, ecdh);
 
-    SSL_CTX_set_options(ssl->ctx, SSL_OP_SINGLE_ECDH_USE);
-
     EC_KEY_free(ecdh);
 #endif
 #endif


-- 
Maxim Dounin
http://nginx.com/support.html



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