【发布时间】:2015-04-13 17:04:59
【问题描述】:
我有一个使用 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 start/stop。
【问题讨论】: