Странная проблема с единорогом и nginx вызвала ошибку 502
У нас есть приложение Ruby on Rails, которое работает на VPS. Этой ночью nginx упал и ответил "502 Bad Gateway". Журнал ошибок Nginx содержал много следующих сообщений:
2013/10/02 00:01:47 [error] 1136#0: *1 connect() to
unix:/app_directory/shared/sockets/unicorn.sock failed (111: Connection refused) while
connecting 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)