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