gpt4 book ai didi

ruby-on-rails - 使用 USR2 重新启动 Unicorn 似乎不会重新加载 production.rb 设置

转载 作者:数据小太阳 更新时间:2023-10-29 06:28:36 24 4
gpt4 key购买 nike

我正在运行 unicorn 并试图实现零停机重启。

到目前为止一切都是很棒的调味料,主进程 fork 并启动 4 个新 worker ,然后杀死旧 worker ,大家都很高兴。

我们的脚本发送以下命令来重启 unicorn :

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

从表面上看一切都很好,但事实证明 unicorn 并没有重新加载 production.rb。 (每次部署时,我们都会将 config.action_controller.asset_host 值更改为一个新的 CDN 容器端点,其中包含我们预编译的 Assets )。

以这种方式重新启动 unicorn 后, Assets 主机仍指向旧版本。执行真正的 重启(即:停止主进程,然后从头开始重新启动 unicorn)获取新的配置更改。

preload_app 在我们的 unicorn 配置文件中设置为 true

有什么想法吗?

最佳答案

我的猜测是您的 unicorn 正在旧生产目录而不是新生产目录中重新启动——换句话说,如果您在 unicorn.rb 中的工作目录是 <capistrano_directory>/current ,您需要确保符号链接(symbolic link)在您尝试重新启动 unicorn 之前发生。

这可以解释为什么可以手动停止和启动它们:您正在执行部署后操作,这可能会导致它们在正确的目录中启动。

在部署过程中什么时候重启 unicorn ?您应该确保在新发布目录被符号链接(symbolic link)为当前目录后发送 USR2 信号。

如果这没有帮助,请 gist 你的 unicorn.rb 和 deploy.rb;它将使调试此问题变得容易得多。

关于ruby-on-rails - 使用 USR2 重新启动 Unicorn 似乎不会重新加载 production.rb 设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9388074/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com