nginx отдаёт 502 се...
 
Уведомления
Очистить всё

nginx отдаёт 502 секунд 30 после каждого деплоя

3 Сообщения
3 Пользователи
0 Реакции
772 Просмотры
Юлия Ф.
Сообщения: 11
Автор темы
Разобрался с блоками фулстек-разработчица
Присоединился: 3 года назад
[#33]

Capistrano, Puma 6 под systemd, nginx проксирует на unix-сокет. После каждого cap production deploy секунд 20-30 пользователи видят 502. В логе nginx:

connect() to unix:/var/www/shop/shared/tmp/sockets/puma.sock failed (111: Connection refused)

Так и должно быть или я что-то не так настроила?


2 ответа
armen_pet
Сообщения: 30
Собрал свой gem DevOps-инженер
Присоединился: 4 года назад

Не должно. Похоже, после деплоя Puma полностью останавливается и стартует заново, и всё время загрузки приложения сокет никто не слушает. Есть два пути. Phased restart: мастер держит сокет, воркеры перезапускаются по одному. Нужен кластерный режим и никакого preload_app!:

# config/puma.rb
workers 2
threads 5, 5
bind "unix://#{ENV.fetch("APP_ROOT")}/shared/tmp/sockets/puma.sock"
prune_bundler

В деплое вместо restart сигнал USR1 мастеру или pumactl phased-restart. Второй путь: сокет держит сам systemd, тогда соединения ждут в очереди, пока Puma поднимается.


Ответ
1 ответ
gena39
Присоединился: 3 года назад

Пишет в irb SRE
Сообщения: 3

я за второй, с socket activation. Puma его поддерживает, и не надо помнить про preload_app и prune_bundler


Ответ