Openresty动态生成工作进程

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

点赞
用户4984564
用户4984564

是但不是

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

  • Nginx 工作进程可以通过向它们发送信号来终止它们。
  • Openresty允许您读取当前工作线程的 PID。
  • LuaJITs FFI 允许您使用 kill()系统调用或
  • 使用 os.execute 您可以直接调用 kill

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


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

nginx 使用一组固定的工作进程,因此您只能关闭正在运行的工作进程,此时主进程会重新启动它们,但进程数将保持不变。

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

然而,我看不到您为什么要这样做的好理由。如果您需要额外的线程,有一个单独的 API 可以提供,其他情况下,您可能只能接受强制重启。

2020-03-26 14:37:04