nginx 学习笔记(3) nginx管理

本文介绍了如何通过发送信号来管理Nginx进程,包括主进程和工作进程支持的不同信号类型,以及如何通过发送HUP信号来平滑地更新配置。

nginx可以通过向其发送信号来进行管理。默认情况下主进程的进程ID写到文件/usr/local/nginx/logs/nginx.pid中。当然也可以在配置文件中自定义该pid文件,自定义使用pid指令来进行修改。主进程支持如下信号:

 

TERM, INTfast shutdown
QUITgraceful shutdown
HUPchanging configuration, keeping up with a changed time zone (only for FreeBSD and Linux), starting new worker processes with a new configuration, graceful shutdown of old worker processes
USR1re-opening log files
USR2upgrading an executable file
WINCHgraceful shutdown of worker processes

 

尽管不是必须,单个的工作进程同样可以通过下列信号进行控制。工作进程支持如下信号:

 

TERM, INTfast shutdown
QUITgraceful shutdown
USR1re-opening log files
WINCHabnormal termination for debugging (requires debug_points to be enabled)

 

                              改变配置文件

为使nginx重新读取配置文件,可以想主进程发送一个HUB信号。主进程首先检测语法的有效性,然后尝试应用到新的配置中即打开日志文件和新的监听套接字:若失败,主进程回滚到改变前的配置,并继续使用旧的配置运行。若成功则开启新的工作进程,给旧的工作进程发送完整性关闭命令,旧的工作进程关闭监听套接字,继续处理旧的请求并返回给客户端,当所有的客户端请求处理完后,旧的工作进程关闭。

   举个例子,假定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为33129的旧工作进程正在处理请求中。过一段时间后再观察,发现它已经关闭掉了:

 

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)

 

 ---出去一段时间

 

 

 

 

 

 

 

 

 

转载于:https://my.oschina.net/u/998304/blog/365679

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值