Code前端首页关于Code前端联系我们

Nginx 教程:进程和运行时控制

terry 2年前 (2023-09-28) 阅读数 58 #未命名

NGINX 在运行时启动的进程以及如何控制它们。

这部分主要涉及两个部分:

  • 主进程和worker进程
  • 控制NGINX

1.主进程和工作进程

NGINX 有一个主进程和一个或多个工作进程。如果启用缓存,缓存加载器和缓存管理器进程也将在启动时运行。
主程序的主要目的是读取和评估配置文件并维护工作流程。

工作进程执行请求的实际处理。 NGINX 依靠操作系统的机制在工作进程之间有效地分配请求。工作进程的数量在配置文件 nginx.conf 中定义,并且可以针对给定配置进行固定,也可以根据可用 CPU 核心的数量自动调整。

2。控制NGINX

要重新加载配置文件,您可以停止或重新启动NGINX或向主进程发送信号。可以通过使用 -s 参数运行 nginx 命令(调用 NGINX 可执行文件)来发送信号。

nginx -s signal

信号的值可以是以下之一:

  • quit – 正常关闭
  • reload – 重新加载配置文件
  • reopen 日志文件 stop – 立即关闭(快速关闭)

也可以使用kill工具,直接向主进程发送信号。默认情况下,主进程的进程ID会写入位于/usr/local/nginx/logs或❀/目录下的nginx.pid。文档。
nginx 可以用信号控制。默认情况下,主进程的进程ID写入文件/usr/local/nginx/logs/nginx.pid。可以在配置时或使用 pid 指令在 nginx.conf 文件中更改名称。主程序支持以下信号: 以Term、INT -快速关闭

  • end -正常关机配置 HC 更改时区(仅限 FreeBSD 和 Linux) ,使用新配置启动新工作流程,正常关闭旧工作流程
  • USR1 - 重新打开日志文件
  • USR2 - 升级可执行文件 WIN CH - 正常关闭工作流程
  • 个人工作流程可以通过信号进行控制,但这不是必需的。支持的信号有:

    • TERM、INT - 快速关闭
    • QUIT - 正常关闭
    • USR1 - 重新打开日志文件
    • WINCH - 调试 调试到❙ )

    更改配置

    至nginx可以重新读取配置文件,必须向主进程发送HUP信号。主进程首先检查语法有效性,然后尝试应用新配置,即。打开日志文件和新的侦听套接字。如果失败,它将回滚更改并继续使用旧配置。如果此操作成功,它将启动一个新的工作进程并向旧工作进程发送一条消息,请求它们关闭。老工作流程认真听取网点的意见,继续为老客户服务。当所有客户端都得到服务时,旧的工作流程将关闭。

    举个例子吧。假设 nginx 运行在 FreeBSD 4.x 上,执行以下命令:

    ps axw -o pid,ppid,user,%cpu,vsz,wchan,command | egrep '(nginx|PID)'
    

    会产生以下输出:

      PID  PPID USER    %CPU   VSZ WCHAN  COMMAND
    33126     1 root     0.0  1148 pause  nginx: master process /usr/local/nginx/sbin/nginx
    33127 33126 nobody   0.0  1380 kqread nginx: worker process (nginx)
    33128 33126 nobody   0.0  1364 kqread nginx: worker process (nginx)
    33129 33126 nobody   0.0  1364 kqread nginx: worker process (nginx)
    

    如果将 HUP 发送到主进程,则输出为:

      PID  PPID USER    %CPU   VSZ WCHAN  COMMAND
    33126     1 root     0.0  1164 pause  nginx: master process /usr/local/nginx/sbin/nginx
    33129 33126 nobody   0.0  1380 kqread nginx: worker process is shutting down (nginx)
    33134 33126 nobody   0.0  1368 kqread nginx: worker process (nginx)
    33135 33126 nobody   0.0  1368 kqread nginx: worker process (nginx)
    33136 33126 nobody   0.0  1368 kqread nginx: worker process (nginx)
    

    PID 's old job 进程仍然继续行驶。过了一会儿,它退出:

     PID  PPID USER    %CPU   VSZ WCHAN  COMMAND
    33126     1 root     0.0  1164 pause  nginx: master process /usr/local/nginx/sbin/nginx
    33134 33126 nobody   0.0  1368 kqread nginx: worker process (nginx)
    33135 33126 nobody   0.0  1368 kqread nginx: worker process (nginx)
    33136 33126 nobody   0.0  1368 kqread nginx: worker process (nginx)
    

    循环日志
    要循环日志,请先重命名它们。之后,USR1信号必须发送到主进程。然后,主进程将重新打开所有当前打开的日志文件,并将它们作为所有者分配给正在运行的工作进程的非特权用户。成功重新打开后,主程序将关闭所有打开的文件,并向工作进程发送一条消息,要求它们重新打开文件。该工作流程还会打开新文件并立即关闭旧文件。因此,旧文件几乎可以立即用于后处理,例如压缩。

    版权声明

    本文仅代表作者观点,不代表Code前端网立场。
    本文系作者Code前端网发表,如需转载,请注明页面地址。

    热门