我有一个使用websockets的perl Catalyst应用程序。我不得不重新启动应用程序的错误修正和功能。 为此,我更改了nginx conf,重新加载nginx并使用新代码启动并行应用程序。然后重新启动旧应用程序并终止中间应用程序。 这条逻辑链的问题是,我可能会杀死正在进行的请求。所有新请求都处理得很好,这不是问题。 所以我的问题是,我可以以某种方式检测到,套接字有持续的请求吗?
或者,我应该使用一个穷人的解决方案,并在杀死之前等待30秒?
Nginx相关部分(现场):
upstream backend {
ip_hash;
server unix:/tmp/frontend.socket;
server unix:/tmp/frontend_redundant.socket down;
}
(重启):
upstream backend {
ip_hash;
server unix:/tmp/frontend.socket down;
server unix:/tmp/frontend_redundant.socket;
}
对于应用程序重启,我使用Daemon :: Control启动/停止。