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

2018-10-0408:22:56服务器及运维Comments1,875 views字数 2205阅读模式

NGINX在运行时启动的过程以及如何控制它们。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/6287.html

在这个部分中,主要涉及两个部分的内容:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/6287.html

  • 主进程和工作进程
  • 控制NGINX

1. 主进程和工作进程

NGINX有一个主进程和一个或多个工作进程。 如果启用缓存,缓存加载程序和缓存管理器进程也将在启动时运行。
主程序的主要目的是读取和评估配置文件以及维护工作进程。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/6287.html

工作进程执行请求的实际处理。 NGINX依赖于操作系统的机制来有效地在工作进程之间分配请求。 工作进程的数量可在nginx.conf配置文件中定义,可以针对给定的配置进行修复,或者自动调整为可用CPU内核数。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/6287.html

2. 控制NGINX

要重新加载配置文件,可以停止或重新启动NGINX,或者发送信号到主进程。 可以使用-s参数运行nginx命令(调用NGINX可执行文件)来发送信号。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/6287.html

nginx -s signal

信号的值可以是以下之一:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/6287.html

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

杀死实用程序也可以使用,将信号直接发送到主进程。 默认情况下,主进程的进程ID被写入位于/usr/local/nginx/logs/var/run目录中的nginx.pid文件。
nginx可以用信号控制。 默认情况下,主进程的进程ID将写入文件/usr/local/nginx/logs/nginx.pid。 该名称可能在配置时更改,或使用pid指令在nginx.conf文件中进行更改。主程序支持以下信号:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/6287.html

  • TERM, INT - 快速关闭
  • QUIT - 正常关闭
  • HUP - 改变配置,跟上改变的时区(仅适用于FreeBSD和Linux),使用新配置启动新的工作进程,正常关闭旧的工作进程
  • USR1 - 重新打开日志文件
  • USR2 - 升级可执行文件
  • WINCH - 正常关闭工作进程

个别工作进程可以用信号来控制,尽管这不是必需的。 支持的信号有:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/6287.html

  • TERM, INT - 快速关闭
  • QUIT - 正常关闭
  • USR1 - 重新打开日志文件
  • WINCH - 调试异常终止(需要启用debug_points)

更改配置文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/6287.html

为了使nginx重新读取配置文件,应将HUP信号发送到主进程。 主进程首先检查语法有效性,然后尝试应用新配置,即打开日志文件和新的监听套接字。 如果失败,它会回滚更改,并继续使用旧配置。 如果此操作成功,它将启动新的工作进程,并向旧的工作进程发送消息,请求它们正常关闭。 旧工作进程密切监听套接字,并继续为旧客户端服务。 在所有客户端被服务之后,旧的工作进程被关闭。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/6287.html

我们来举例说明一下。 想象一下,nginx是在FreeBSD 4.x上运行,执行以下命令:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/6287.html

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

产生以下输出:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/6287.html

  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发送到主进程,则输出变为:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/6287.html

  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 33129的老工作流程仍然继续运行。 一段时间后,它退出:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/6287.html

 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信号应发送到主进程。 然后,主进程将重新打开所有当前打开的日志文件,并将其分配给正在运行的工作进程的非特权用户作为所有者。 成功重新打开后,主程序关闭所有打开的文件,并将消息发送到工作进程,要求他们重新打开文件。 工作进程也会打开新文件并立即关闭旧文件。 因此,旧文件几乎立即可用于后处理,如压缩。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunwei/6287.html

  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/yunwei/6287.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定