Уведомления
Очистить всё
Деплой и инфраструктура
3
Сообщения
3
Пользователи
0
Реакции
772
Просмотры
4 января 2024 21:21
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 ответа
4 января 2024 22:27
Не должно. Похоже, после деплоя 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 поднимается.