Я развертываю приложение rails через пассажира и nginx (с использованием сервера эластичного поиска, который работает на одном компьютере) в системе Ubuntu. Это отлично работает около двенадцати часов. Тогда только ответ сервера - это сообщение 503. Перезапуск nginx решает проблему.
Я уже много раз просмотрел логи rails / nginx / elasticsearch, но не смог найти никаких подсказок об этом «падении». Видны только некоторые общие ошибки маршрутизации.
Есть ли другое место, где я могу проверить? Как я могу эффективно отладить такое поведение?
После дальнейших исследований я смог решить проблему. После некоторого времени работы elasticsearch забирает себе все процессорное время, не оставляя процессорного времени для nginx / пассажира. Когда там накапливается достаточно запросов, nginx просто умирает.
Итак, проблема заключалась в elasticsearch. Я пробовал несколько конфигураций, но ни одна из них, похоже, ничего не меняла.
Следуя совету из сообщения здесь http://elasticsearch-users.115913.n3.nabble.com/, Я попытался запустить elasticsearch на JVM оракулов вместо openJDK. Это сработало. С тех пор система стабильна.
503 означает, что служба недоступна, обычно обслуживание или сервер не может ответить из-за перегрузки.
Предполагая, что все пакеты, связанные с развертыванием, обновлены и не предпринимаются попытки внешних (d) DoS-атак, устанавливает ли приложение / elasticsearch много внешних подключений? Попробуйте посмотреть netstat.