Перезапуск 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
в нашем файле конфигурации единорога.
Любые мысли?
Ответы
Ответ 1
Мое предположение заключается в том, что ваши единороги перезапускаются в старой производственной директории, а не в новом производственном каталоге - другими словами, если ваш рабочий каталог в unicorn.rb равен <capistrano_directory>/current
, вам необходимо убедиться, что symlink происходит прежде чем пытаться перезапустить единорогов.
Это объясняет, почему останавливается и запускается их вручную: вы делаете это пост-развертывание, по-видимому, заставляя их запускаться в правильном каталоге.
Когда в процессе развертывания вы перезапускаете единорогов? Вы должны убедиться, что сигнал USR2 отправляется после того, как новая директория выпуска символически связана как текущая.
Если это не поможет, пожалуйста, укажите unicorn.rb и deploy.rb; это значительно облегчит эту проблему.
Ответ 2
Имейте в виду, что:
ваш рабочий каталог в unicorn.rb должен быть: /Ваш/крышка/каталог/ток
НЕ: File.expand_path ( "../..", FILE)
Так как ошибка разблокировки софт-ссылки единорога и linux: мягкая ссылка не может работать хорошо.
например:
cd current #current - это мягкая ссылка на другой каталог
......
когда мы получаем наш рабочий каталог, мы получили абсолютный путь, а не путь в "текущем"