Иногда системе не удается перезапустить nginx. Самое неприятное во всем этом - это "иногда".
Сейчас на сервере установлено:
Debian GNU/Linux 7 (wheezy)
nginx/1.2.1 (пакет nginx-extras [nginx web/proxy server (extended version)])
При ошибочном перезапуске в логах появляется следующее.
2014/05/06 07:03:04 [emerg] 3176#0: bind() to 0.0.0.0:80 failed (98: Address already in use)
2014/05/06 07:03:04 [emerg] 3176#0: bind() to 0.0.0.0:80 failed (98: Address already in use)
2014/05/06 07:03:04 [emerg] 3176#0: bind() to 0.0.0.0:80 failed (98: Address already in use)
2014/05/06 07:03:04 [emerg] 3176#0: bind() to 0.0.0.0:80 failed (98: Address already in use)
2014/05/06 07:03:04 [emerg] 3176#0: bind() to 0.0.0.0:80 failed (98: Address already in use)
2014/05/06 07:03:04 [emerg] 3176#0: still could not bind()
При анализе ситуации, выявлено, что слушать этот порт продолжает сам nginx и возникает такое ощущение что отпускать он его и не собирается. После kill все успешно стартует.
В Интернете в основном пишут что проблема может быть следующей:
1) В сервере по умолчанию добавлена настройка
listen [::]:80 default_server;
и она создает проблему связанную с IP6.
Но у нас даже характер ошибки в логах немного другой.
2) Запущенный Apache и его конфликт с nginx
У нас такой проблемы нет. root@beta:/etc# netstat -tnlp | grep 80
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 10307/nginx
tcp 0 0 127.0.0.1:8080 0.0.0.0:* LISTEN 11605/apache2
3) Просто процесс завис, можно его убить и все заново запустить.
Это конечно подходит под наш вариант, но совсем не устраивает.
Я предполагаю что проблема может быть:
- мои кривые настройки nginx
- некорректный скрипты запуска/перезапуска debian
- проблемная сборка nginx в debian
Сталкивался ли кто-нибудь с подобным проявлением nginx?
Меня очень беспокоит что эта ошибка имеет не системный характер, а мне требуется автоматически перезагружать nginx.