【问题标题】:Can I identify ongoing web request on linux?我可以在 linux 上识别正在进行的 Web 请求吗?
【发布时间】: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。

【问题讨论】:

    标签: linux perl websocket


    【解决方案1】:

    根据这个nginx guide,命令nginx -s quit(或kill -QUIT)会优雅地关闭等待工作进程完成当前请求的服务。

    【讨论】:

    • 嗯,都是花花公子,但应用程序在 FastCGI 上运行,所以我怀疑 nginx 对 fastcgi 工作进程一无所知。 Nginx 只是代理。另外我只重新加载 nginx conf,所以 nginx 一直在运行。
    猜你喜欢
    • 2014-09-22
    • 1970-01-01
    • 1970-01-01
    • 2019-02-20
    • 1970-01-01
    • 2012-04-06
    • 1970-01-01
    • 2013-05-30
    • 2022-01-04
    相关资源
    最近更新 更多