Перезапуск Unicorn с USR2 не приводит к перезагрузке настроек production.rb

StackOverflow https://stackoverflow.com/questions/9388074

Вопрос

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

Пока все это круто, главный процесс разветвляется и запускает 4 новых рабочих, затем убивает старого, все довольны.

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

родовое слово

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

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

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

Есть мысли?

Это было полезно?

Решение

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

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

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

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

Другие советы

Помните, что: ваш рабочий каталог в unicorn.rb должен быть: / ваш / cap / directory / current

НЕ : File.expand_path ("../ ..", ФАЙЛ )

Из-за ошибки разветвления программных ссылок unicorn и linux: программные ссылки не работают должным образом.

например:

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

... ...

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top