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可以接收哪些信号量


浙公网安备 33010602011771号