Opened 8 years ago

Closed 5 years ago

#265 closed defect (wontfix)

Nginx не запускается с ошибкой: the event "ngx_master_xxx" was not signaled for 5s

Reported by: Максим Архипов Owned by:
Priority: minor Milestone:
Component: nginx-core Version: 1.2.x
Keywords: Cc:
uname -a: -
nginx -V: -

Description

Баг - невозможность старта и соответственно использования всех версий 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, чтобы он не тормозил запуск.

P.S. О баге сообщаю впервые, прошу простить если написано сумбурно.

Change History (4)

comment:1 by Valentin V. Bartenev, 8 years ago

Priority: criticalminor

Проверьте, что на ключах нет паролей.

in reply to:  1 comment:2 by Максим Архипов, 8 years ago

Replying to Valentin V. Bartenev:

Проверьте, что на ключах нет паролей.

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

На 1200 ssl доменах еще работает, на 1300 и выше уже не запускается, причём в менеджере процессов видно, что Nginx нормально запускается набирая память а потом мастерпроцесс резко всё убивает по некому таймауту. Тупо не хватает времени, видимо SSL очень тормозит процессы запуска. Максим Дунин на форуме предложил патч, скоро его проверю и отпишусь.

comment:3 by Максим Архипов, 8 years ago

Патч предложенный на форуме не помог. Помогла замена таймаута в ngx_process.c

rc = WaitForMultipleObjects(2, events, 0, 5000); // 5 секунд


на

rc = WaitForMultipleObjects(2, events, 0, 60000); // 1 минута

но это же не выход... почему так тормозит запуск SSL доменов не понятно. Без SSL тормозов нет, даже 10 тыс. доменов запускается за 5 сек.

Last edited 8 years ago by Максим Архипов (previous) (diff)

comment:4 by Maxim Dounin, 5 years ago

Resolution: wontfix
Status: newclosed
Note: See TracTickets for help on using tickets.