【发布时间】:2014-06-22 04:45:36
【问题描述】:
对于同步处理,我们使用带有 beanstalkd 队列的 supervisord。应用程序和工作程序代码全部用 php 编写(使用SlmQueue)。我注意到当我们部署新代码时,新代码不适用于工作进程。我不太确定是什么原因,但我确实发现了:
-
service supervisor restart不重启进程(PID保持不变) -
supervisorctl reload会重新加载所有进程,新代码暂时使用 -
supervisorctl无法(据我了解)仅重新加载一个程序并保持其他程序仍在运行
我正在寻找一种部署新代码的方法(通过 ansible 和 git checkout 工作)并且无需重新启动完整的主管进程及其所有子进程。我们使用 PHP 5.5 运行 Ubuntu 12.04 机器。我猜操作码缓存可能会起作用,但我不确定如何触发这些特定文件的刷新。
有没有办法优雅地重新加载进程而不是完全重新加载所有 supervisord 子进程?或者如果原因可能是操作码缓存,是否可以使用某个触发器刷新缓存?
【问题讨论】:
标签: php supervisord