#ruby-on-rails #amazon-web-services #amazon-elastic-beanstalk #puma
#ruby-on-rails #amazon-веб-сервисы #amazon-elastic-beanstalk #puma
Вопрос:
Я пытаюсь запустить приложение Rails 6 на AWS Elastic Beanstalk, но я получаю из журнала puma следующее (повторяется каждые несколько секунд)
[21776] Gemfile в контексте: /var/app/current/Gemfile
[21776] Досрочное завершение работы worker
Номера версий:
- Рельсы
6.0.3.3
- puma
4.3.5
- ElasticBeanstalk
Ruby 2.7 running on 64bit Amazon Linux 2/3.1.1
- ruby
2.7.1p83
Сервер не отвечает извне экземпляра, и на нем ничего log/production.log
нет.
При запуске на компьютере разработчика в production
режиме mode ошибок нет, и база данных доступна (сбой миграции отсутствует).
Запуск на экземпляре AWS команды bundle exec puma -p 3000 -e production
, которую я получаю
Puma starting in single mode...
Version 4.3.5 (ruby 2.7.1-p83), codename: Mysterious Traveller
Min threads: 5, max threads: 5
Environment: production
Listening on tcp://0.0.0.0:3000
Use Ctrl-C to stop
таким образом, нет очевидной ошибки, которая может привести к остановке рабочего процесса.
Как я могу узнать, что вызывает сбой рабочих?
Редактировать 1:
Я запустил консоль Rails на экземпляре и обнаружил, что переменные среды отсутствуют — например, пользователь / передача / хост производственной базы данных. Как только я их жестко запрограммировал, я смог подключиться к базе данных. Я подозреваю, что отсутствие других переменных среды приводит к сбою приложения.
Комментарии:
1. Я не думаю, что EB использует порт 3000 — я бы вместо этого использовал переменную среды $PORT . Вам также может потребоваться проверить, где экземпляр nginx ищет ваш серверный сервер
Ответ №1:
У пользователя на форуме AWS был ответ.
Настройка в моем Gemfile
gem "nio4r", "= 2.5.2"
исправлена проблема.
Комментарии:
1. Огромное спасибо за это! Интересно, как мы избежим повторения чего-то подобного в будущем?
2. @SimonL.Brazell Служба поддержки AWS рекомендует взять отдельную ветку и создать параллельную среду EB с последней конфигурацией платформы и посмотреть, работает ли она. Они также сказали, что у них даже нет доступа ssh к ящику, поэтому вам решать, как определить эти проблемы.
3. но это случилось со мной без развертывания или чего-либо еще, только клиент заметил, что сервер больше не отвечает, и дайте мне знать, конечно, если сервер не меняется / не нарушается, он должен просто продолжать работать правильно?
4. то же самое случилось со мной: окно продолжало работать, как будто ничего не произошло, но приложение rails не отвечало. Я обнаружил проблему путем устранения и обнаружил, что puma порождает рабочих, и они продолжают умирать.
5. Я нашел это подробное описание того, как упаковывать драгоценные камни с вашим приложением, не уверен, решит ли это проблему, но я мог бы попробовать.