【问题标题】:Openresty dynamic spawning of worker process工作进程的 Openresty 动态生成
【发布时间】:2020-07-06 20:02:18
【问题描述】:

是否可以在 openresty 中使用 Lua 脚本生成一个新的工作进程并优雅地关闭现有的工作进程?

【问题讨论】:

    标签: nginx lua openresty


    【解决方案1】:

    是但不是

    Openresty 本身并没有真正直接提供这种功能,但它确实为您提供了必要的构建块:

    • nginx 工作人员可以通过向他们发送signal 来终止他们
    • openresty 允许你 read the PID 当前工作线程
    • LuaJITs FFI 允许您使用kill() 系统调用或
    • 使用os.execute,您可以直接调用kill

    结合这些,你应该能够实现你想要的:D


    注意:再次阅读问题后,我发现我真的只回答了第二部分。

    nginx 使用固定数量的工作进程,因此您只能关闭正在运行的工作进程,然后主进程将重新启动,但数量将保持不变。

    如果您只想更改工作进程的数量,则必须完全重新启动 nginx 实例(我刚刚尝试过nginx -s reload -g 'worker_processes 4;',它实际上并没有产生任何额外的工作进程)。

    但是,我看不出你为什么会这样做的充分理由。如果您需要额外的线程,可以使用单独的 API,除此之外,您可能只需要硬重启即可。

    【讨论】:

      猜你喜欢
      • 2018-08-07
      • 2015-11-25
      • 1970-01-01
      • 2014-03-16
      • 2016-02-27
      • 2014-03-20
      • 2012-12-20
      • 2013-08-25
      • 1970-01-01
      相关资源
      最近更新 更多