Подтвердить что ты не робот

Перезапуск Unicorn с USR2, похоже, не перезагружает настройки production.rb

Я запускаю единорога и пытаюсь перезагрузить нулевые перезагрузки.

До сих пор это потрясающий соус, мастер-процесс вилки и запускает 4 новых рабочих, а затем убивает старое, все счастливы.

Наши скрипты отправляют следующую команду для перезапуска единорога:

kill -s USR2 `cat /www/app/shared/pids/unicorn.pid`

На поверхности все выглядит великолепно, но оказывается, что единорог не перезагружает production.rb. (Каждый раз, когда мы развертываем, мы меняем значение config.action_controller.asset_host на новую конечную точку контейнера CDN с нашими предварительно скомпилированными активами в ней).

После перезапуска единорога таким образом хост-ресурс все еще указывает на старую версию. Выполнение реального перезапуска (т.е. Остановка основного процесса, а затем запуск единорога снова с нуля) подбирает новые изменения конфигурации.

preload_app устанавливается в true в нашем файле конфигурации единорога.

Любые мысли?

4b9b3361

Ответ 1

Мое предположение заключается в том, что ваши единороги перезапускаются в старой производственной директории, а не в новом производственном каталоге - другими словами, если ваш рабочий каталог в unicorn.rb равен <capistrano_directory>/current, вам необходимо убедиться, что symlink происходит прежде чем пытаться перезапустить единорогов.

Это объясняет, почему останавливается и запускается их вручную: вы делаете это пост-развертывание, по-видимому, заставляя их запускаться в правильном каталоге.

Когда в процессе развертывания вы перезапускаете единорогов? Вы должны убедиться, что сигнал USR2 отправляется после того, как новая директория выпуска символически связана как текущая.

Если это не поможет, пожалуйста, укажите unicorn.rb и deploy.rb; это значительно облегчит эту проблему.

Ответ 2

Имейте в виду, что: ваш рабочий каталог в unicorn.rb должен быть:   /Ваш/крышка/каталог/ток

НЕ:   File.expand_path ( "../..", FILE)

Так как ошибка разблокировки софт-ссылки единорога и linux: мягкая ссылка не может работать хорошо.

например:

cd current #current - это мягкая ссылка на другой каталог

......

когда мы получаем наш рабочий каталог, мы получили абсолютный путь, а не путь в "текущем"