nginx是以多进程的方式来工作的。
nginx在启动后,会有一个master进程和多个worker进程和cacah manage(内存管理)cacah loader(内存加载)

master process 并不会真正的处理请求,他只是管理下边的work process

包含:
  1、接收来自外界的信号,向各worker进程发送信号。
  2、监控worker进程的运行状态,当worker进程退出后(异常情况下),会自动重新启动新的worker进程。

work process 处理请求

而基本的网络事件,则是放在worker进程中来处理了。worker进程之间是对等的,一个请求,只可能在一个worker进程中处理,一个worker进程,不可能处理其它进程的请求。

worker进程的个数,一般会设置与机器cpu核数一致(如果我们在配置文件中设置了worker_process:auto 的话就会这样)。当我们提供80端口的http服务时,一个连接请求过来,每个进程都有可能处理这个连接。

技巧:我们可以通过lscup这个命令来查看该服务器有几个cpu

https://blog.csdn.net/xxb2008/article/details/42238557

使用信号量管理master和worker

这里的信号量是Linux下的信号量

我们并不推荐直接给worker发送信号,因为master能管理worker

master可以接收哪些信号呢?

 

 

worker可以接收哪些信号量

 

 

 

posted on 2020-01-31 22:47  程序员一学徒  阅读(279)  评论(0)    收藏  举报