nginx 信号量

简述

nginx 实际上上通过信号量去控制进程的,平时所有的关闭、重启等操作的原理都是通过不同的信号发送给nginx 主进程来完成的。

信号量

TERM, INT             Quick shutdown     (强制关闭,暴力操作,正常进行的请求突然中断)

QUIT            Graceful shutdown (优雅关闭,会在请求处理完成之后,自动关闭) HUP             Configuration reload
Start the new worker processes with a new configuration Gracefully shutdown the old worker pro cesses (优雅的重新加载配置文件,如果修改完配置文件,需要重启的话,可以使用这个信号量,使用该信号量重启并不会关闭进程和中断请求)

USR1              Reopen the log files
(重写一个日志文件)

USR2              Upgrade Executable on the fly
(升级执行文件)

WINCH              Gracefully shutdown the worker processes
(优雅的关闭工作进程)

实际应用

1、 kill  -HUP/INT/..  pid(nginx master)

2、 ../sbin/nginx -s  reload 等效于 kill -HUP pid  #加载新的配置,master 进程不变,逐步停止没有请求的work启动新的worker进程。

3、 kill      -USR1  pid     重新打开日志文件,日志备份时使用。(由于linux 中是通过inode 识别文件的,所以即使重命名文件名字变了但是inode 不变。日志备份把旧日志改名为access.log.bak后新建一个access.log ,发送USR1信号nginx 进程就会关闭正在打开写入的文件,重新写入新的access.log)

4、USR2与WINCH        当需要把正在运行的nginx 进程平滑升级的时候配合使用

5、nginx pid  一般主配置文件会配置它保存在 ../logs/nginx.pid中,nginx 启动脚本在关闭nginx 时候会删除此文件,启动的时候生成此文件,根据此文件判定是否启动。

原文地址:https://www.cnblogs.com/fanggege/p/12386004.html