nginx的信号及作用
nginx 信号定义
//------------------ src/core/ngx_config.c -----------------
#if !(NGX_WIN32)
#define ngx_signal_helper(n) SIG##n
#define ngx_signal_value(n) ngx_signal_helper(n)
#define ngx_random random
/* TODO: #ifndef */
#define NGX_SHUTDOWN_SIGNAL QUIT
#define NGX_TERMINATE_SIGNAL TERM
#define NGX_NOACCEPT_SIGNAL WINCH
#define NGX_RECONFIGURE_SIGNAL HUP
#if (NGX_LINUXTHREADS)
#define NGX_REOPEN_SIGNAL INFO
#define NGX_CHANGEBIN_SIGNAL XCPU
#else
#define NGX_REOPEN_SIGNAL USR1
#define NGX_CHANGEBIN_SIGNAL USR2
#endif
#define ngx_cdecl
#define ngx_libc_cdecl
#endif信号作用
CHLD: 当worker进程出现异常关闭时,会给master进程发送该信号,master进程收到信号会重启worker进程
TERM: 立即停止服务,而不会等待已连接的tcp处理完请求。对worker进程使用,当前worker会退出,但master会重启一个新worker。对master使用,master和worker都会退出。
QUIT: 优雅的停止服务,不会立刻断开用户的tcp连接,处理完后退出进程。对worker进程使用,当前worker会退出,但master会重启一个新worker。对master使用,master和worker都会退出。
HUP: 重载配置文件,等同于reload。
USR1: 重新打开日志文件,主要用在日志切割(相当于reopen)。
USR2: 启动新的master主进程,平滑升级可执行程序,主要用在版本升级。这时候老master和老worker不会结束。
WINCH: 让master进程优雅的关闭所有的worker进程。发送WINCH信号给旧版主进程,旧版主进程就开始从容关闭所有worker进程,但master不关闭,可以重新调用HUP重新启用这个master。
KILL、INT,直接结束进程,不平滑处理连接。
worker进程从master接收的信号
TERM
QUIT
USR1
最后更新于
这有帮助吗?