preload_app true
помогло для нашего приложения, поэтому сделайте это, если вы видите проблемы с таймаутами во время развертывания / перезагрузки. Комментарии о том, что это не помогает, заставили меня подумать, что не стоит пытаться, а затем поняли, что это действительно то исправление, в котором мы нуждались.
Нашей ситуацией было медленно загружаемое приложение Rails, использующее preboot . При некоторых развертываниях и перезапусках мы получим много тайм-аутов, вплоть до того, что сайт будет сочтен неработоспособным в результате нашего мониторинга работоспособности.
Мы поняли, что с preload_app false
Unicorn сначала свяжет свой порт, а затем загрузит приложение. Как только он связывает порт, Heroku начинает отправлять ему трафик. Но затем это медленное приложение загружается слишком долго, так что трафик получает тайм-ауты.
Это легко проверить, запустив Unicorn в dev, попытавшись получить доступ к сайту сразу после запуска Unicorn и проверив, есть ли у вас ошибка типа «нет сервера на этом порту» (желательно) или очень медленный запрос (нежелательно) ).
Когда мы вместо этого устанавливаем preload_app true
, тогда потребуется больше времени, чтобы Unicorn связал порт, но как только это произойдет, и Heroku отправит ему трафик, он будет готов ответить.