nginx短篇(9):信号

栏目: 服务器 · Nginx · 发布时间: 5年前

内容简介:所属分类:Ansible
  • A+

所属分类:Ansible 运维技术

博主会将与Nginx有关的知识点总结到"nginx短篇系列"文章中,如果你对nginx不是特别了解,请 按照顺序 阅读"nginx短篇系列",以便站在前文的基础上理解新的知识点。

近期会比较忙,更新时间可能不会特别稳定,三四天才来看一看也有可能,还是请大家关注公众号吧,如果有更新会收到通知。

通过前文章我们已经知道,当我们需要让nginx重新打开日志文件时,需要使用kill命令向nginx的master进程发送USR1信号,或者执行"nginx -s reopen"命令,它们的效果是完全一样的,那么你可能会问,"nginx -s"命令除了能够使用reopen,不是还能够使用reload、stop和quit么,那么reload、stop、quit有没有完全等效的信号呢?还真有,这些信号的对应关系如下:

reopen对应USR1信号
reload对应HUP信号
stop对应TERM信号或者INT信号
quit对应QUIT信号

通过上述对应关系我们可以推断出,"nginx -s reload"命令与"kill -HUP NginxMasterPid"命令的作用是一样的。

之前说过,master进程是负责管理worker进程的,其实,当我们向master进程发送信号时,master进程就会根据捕捉到的信号来管理worker进程,那么,我们都能向master进程发送哪些信号呢?我们能向master进程发送如下信号:

TERM或者INT:表示立即停止nginx
QUIT:表示优雅的停止nginx
HUP:重载配置文件
USR1:重新打开日志文件
USR2:热升级nginx程序
WINCH:优雅的关闭相应的worker进程

可以看到,我们通常可以手动的向master进程发送上述信号,而前四种信号又可以使用"nginx -s"命令代替,至于USR2信号和WINCH信号,就只能使用kill命令发送了,USR2信号和WINCH信号在热部署Nginx时(平滑升级编译安装的nginx时)会用到,等总结相关文章时再行介绍吧。

其实,不仅master进程可以直接接收信号,work进程也可以直接接收信号,但是通常情况下,我们不应该手动的向worker进程直接发送信号,而是应该通过master进程来管理他们,虽然我们不应该向work进程发送信号,但是此处还是列出worker进程可以接收到的信号,以便了解它们,worker进程可以接收的信号如下:

TERM信号或INT信号
QUIT信号
USR1信号
WINCH信号

如果因为某些原因,worker进程意外终止了,master进程会创建一个新的worker进程,以保证有对应的worker进程可以使用,当子进程worker进程终止时,会向master父进程发送CHLD信号,当master进程收到CHLD信号以后,就会知道对应的worker进程退出了,此时,master进程会创建一个新的worker进程,演示过程如下:

假设当前正常情况下,master进程号为12609,两个worker进程的进程号为12610、12611
# ps -ef | grep nginx
root      12609      1  0 17:17 ?        00:00:00 nginx: master process nginx
nobody    12610  12609  0 17:17 ?        00:00:00 nginx: worker process
nobody    12611  12609  0 17:17 ?        00:00:00 nginx: worker process
root      12613   9361  0 17:17 pts/1    00:00:00 grep --color=auto nginx
 
使用kill命令终止pid为12610的worker进程
# kill -INT 12610
 
再次查看nginx进程,会发现master进程自动创建了一个pid为12614的worker进程。
# ps -ef | grep nginx
root      12609      1  0 17:17 ?        00:00:00 nginx: master process nginx
nobody    12611  12609  0 17:17 ?        00:00:00 nginx: worker process
nobody    12614  12609  0 17:17 ?        00:00:00 nginx: worker process
root      12624   9361  0 17:17 pts/1    00:00:00 grep --color=auto nginx

通过上述描述,master进程和worker进程的关系是否更加清晰了呢?

我的微信公众号

关注"实用运维笔记"微信公众号,当博客中有新文章时,可第一时间得知哦~


以上所述就是小编给大家介绍的《nginx短篇(9):信号》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Python基础教程

Python基础教程

[挪] Magnus Lie Hetland / 袁国忠 / 人民邮电出版 / 2018-2-1 / CNY 99.00

本书包括Python程序设计的方方面面:首先从Python的安装开始,随后介绍了Python的基础知识和基本概念,包括列表、元组、字符串、字典以及各种语句;然后循序渐进地介绍了一些相对高级的主题,包括抽象、异常、魔法方法、属性、迭代器;此后探讨了如何将Python与数据库、网络、C语言等工具结合使用,从而发挥出Python的强大功能,同时介绍了Python程序测试、打包、发布等知识;最后,作者结合......一起来看看 《Python基础教程》 这本书的介绍吧!

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具