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

信号作用

  1. CHLD: 当worker进程出现异常关闭时,会给master进程发送该信号,master进程收到信号会重启worker进程

  2. TERM: 立即停止服务,而不会等待已连接的tcp处理完请求。对worker进程使用,当前worker会退出,但master会重启一个新worker。对master使用,master和worker都会退出。

  3. QUIT: 优雅的停止服务,不会立刻断开用户的tcp连接,处理完后退出进程。对worker进程使用,当前worker会退出,但master会重启一个新worker。对master使用,master和worker都会退出。

  4. HUP: 重载配置文件,等同于reload。

  5. USR1: 重新打开日志文件,主要用在日志切割(相当于reopen)。

  6. USR2: 启动新的master主进程,平滑升级可执行程序,主要用在版本升级。这时候老master和老worker不会结束。

  7. WINCH: 让master进程优雅的关闭所有的worker进程。发送WINCH信号给旧版主进程,旧版主进程就开始从容关闭所有worker进程,但master不关闭,可以重新调用HUP重新启用这个master。

  8. KILL、INT,直接结束进程,不平滑处理连接。

worker进程从master接收的信号

  1. TERM

  2. QUIT

  3. USR1

最后更新于

这有帮助吗?