Странная проблема с единорогом и nginx вызвала ошибку 502

У нас есть приложение Ruby on Rails, которое работает на VPS. Этой ночью nginx упал и ответил "502 Bad Gateway". Журнал ошибок Nginx содержал много следующих сообщений:

2013/10/02 00:01:47 [error] 1136#0: *1 connect() tounix:/app_directory/shared/sockets/unicorn.sock failed (111: Connection refused) whileconnecting to upstream, client: 5.10.83.46, server: www.website.com, request: "GET /resource/206 HTTP/1.1", upstream: "http://unix:/app_directory/shared/sockets/unicorn.sock:/resource/206", host: "www.website.com"

Эти ошибки начались внезапно, потому что предыдущие сообщения об ошибках были 5 дней назад.

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

Я пытался перезагрузить сервер через service nginx restart, но это не помогло. Также не было никаких ожидающих процессов единорога.

Проблема была решена, когда я повторно развернуть приложение. И это странно, потому что я развернул ту же версию приложения за 10 часов до отключения сервера.

Я ищу любые предложения, как предотвратить такие "волшебные" случаи в будущем. Благодарим Вас за любую помощь!

1 ответ

Решение

Похоже, ваш сервер единорога не работал, когда nginx пытался получить к нему доступ.

Это может быть вызвано перезапуском VPS, некоторым исключением в процессе единорога или уничтожением процесса единорога из-за нехватки свободной памяти. (ИМХО перезагрузка VPS является наиболее вероятной причиной)

ps aux | grep unicorn

Также вы можете проверить работоспособность сервера с помощью

uptime

Тогда ты можешь:

  • добавить скрипт, который запускает единорога при загрузке VPS
  • добавить его как услугу
  • запустить некоторый процесс мониторинга (например, monit)
Другие вопросы по тегам