第二十讲:Nginx进程结构实例演示

  上一讲我们提到了Nginx的多进程模型,由master作为父进程启动许多子进程,Nginx的父子进程之间是通过信号管理的,现在我们通过一个简单的演示,来直观地看下这些父子进程以及信号之间是怎么样工作的?

在Nginx配置当中,我启动了两个worker进程;

  使用ps命令  ps -ef |grep nginx 查看nginx 进程

  

 

   有一个master进程是root用户启动的,进程的id号为 13517;使用ps命令可以查看到当前进程的id和父进程的id;

  我们执行nginx的一个命令行命令就是 nginx -s reload 它会把之前的woker进程,包括cache进程,包括url的退出,再使用新的配置型去启动新的worker进程;

  

 

 

   我们可以看到之前的两个子进程 3718,3719已经不见了,新出的两个子进程为3729,3730

  reload 和HUP信号它们的作用是相同的;现在如果我们像Nginx的master 进程 3714 发送HUP信号;是不是会发生相同的结果尼?

  

 

 

   我们可以看到发送信号HUP以后,之前的两个子进程都不在了,新启用的两个子进程;

  像quit,stop 对应的也有信号,那么如果我像一个worker进程发送一个退出的信号,那么这个worker进程就会退出;但是进程在退出时,会自动的向它的父进程(master进程)发送一个默认行为SIGCHLD信号;

  master进程收到了这样的一个信号以后尼,master进程就知道它的子进程退出了,它会新起一个worker进程,维持开启了的子进程个数的结构;

  

 

 

   SIGTERM    发送到进程的 TERM 信号用于要求进程终止

  

 

  

  

  

 

posted @ 2020-03-06 18:00  痞子胥  阅读(152)  评论(0)    收藏  举报