Re: после yum update остались активны два мастер-процесса nginx
Gena Makhomed
gmm на csdoc.com
Чт Мар 30 16:59:23 UTC 2017
On 30.03.2017 17:26, Konstantin Pavlov wrote:
>> в файле /var/run/nginx.pid записано 26112
>> в файле /var/run/nginx.pid.oldbin записано 603
>>
>> при обновлении nginx с версии 1.11.10 на версию 1.11.12
>> через yum update он ругнулся, что во время обновления произошла
>> ошибка и остались висеть оба мастер-процесса со своими воркерами.
> Сообщения какие-нибудь остались в терминале?
Только это: "Binary upgrade failed, please check nginx's error.log"
Но судя по pid-файлам, "Starting new master nginx" получилось сделать,
а операция "Graceful shutdown of old nginx" вообще не была выполнена.
> Что либо есть в error log'ах в эпсилон-окрестности времени обновления?
В /var/log/nginx/error.log пусто, проверка nginx -t проходит без ошибок.
> Сколько по времени занимает проверка конфигурационного файла (nginx -t)?
Около секунды, но иногда - проверка конфига занимает 6 или 11 секунд.
Наверное сказывается нагрузка на диски другими контейнерами сервера.
А насколько я понял исходники nginx - он создает pid-файл
только после успешного чтения конфигурационного файла. (!)
Причина глюка видимо в том, что за секунду ни разу не выполнилось
условие if [ -f ${oldbinpidfile} -a -f ${pidfile} ], потому что
нового ${pidfile} просто еще не было на тот момент на диске.
Может быть имеет смысл сделать UPGRADEWAITLOOPS побольше, так чтобы
максимальное время ожидания было не 1 секунда, а 30 секунд например?
Это будет очень актуально для конфигураций с большим количеством
включаемых файлов на серверах с нагруженной дисковой подсистемой.
А так как сейчас есть - получается race condition.
Собственно именно это и наблюдалось в моем случае.
--
Best regards,
Gena
Подробная информация о списке рассылки nginx-ru