具有nginx和fastcgi重载应用程序的催化剂,无需停机

时间:2013-05-30 00:28:43

标签: perl nginx reload fastcgi catalyst

在比较mod_perl和fastcgi时总是列出的一个好处是,对于mod_perl,您必须完全重新加载应用程序并有停机时间,但使用fastcgi,您可以重新加载应用程序而无需停机。但是,我找不到任何如何做到这一点的例子。这是否可以重新加载使用fastcgi运行而没有任何停机时间的Catalyst应用程序?我按照这个guide来启动并运行我的Catalyst应用程序。谢谢!

2 个答案:

答案 0 :(得分:0)

是。在FastCGI下运行的应用程序(无论是否使用Catalyst)只需exit;,FastCGI将立即生成替换进程,前提是FastCGI已为该应用程序定义了AppClass,并且AppClass配置为正{ {1}}数。

如果没有AppClass或-processes为0,则当下一个请求进入应用程序的URI时,将创建替换过程。在等待应用程序启动时,这可能会导致第一个请求稍有延迟,但请求仍将正常处理。

在任何一种情况下,如果在完成当前请求后允许应用程序-processes而不是在请求中间被中断,则应该没有传入请求将丢失或以其他方式失败的时刻(例如,exit)。

答案 1 :(得分:0)

我能够通过组合此guide的脚本和此answer中找到的部分bash脚本来创建一个完成我想要的脚本。如果您将脚本放在/etc/init.d中,然后在顶部更改相应的变量,则此脚本非常有用。主叫:

service script reload

/etc/init.d/script reload

允许您在新代码加载时没有停机时间。该脚本可以找到here。您只需要下载脚本,更改顶部的变量,执行

chmod +x script

并将其移至/etc/init.d,然后您就可以开始了! :)