目录
- 进程结构图
- 信号量管理
- Linux的信号量管理机制
- 利用信号量管理Nginx进程
- 配置文件重载原理
C/C++ Linux服务器开发高级架构学习视频点击:C/C++Linux服务器开发/Linux后台架构师-学习视频教程
进程结构图
Nginx是多进程结构,多进程结构设计是为了保证Nginx的高可用高可靠,包含:
- master进程:父进程,负责worker进程的管理
- worker进程:子进程,worker进程一般配置与服务器CPU核数相同,worker进程用来处理具体请求。
- cache进程:也是子进程,包括cache manager和cache loader进程,主要是反向代理做缓存使用。
注:多进程相对于多线程之所以能够保证高可用与高可靠是因为进程间地址空间是独立的,进程间的任务不会相互影响,相对多线程更加耗费CPU资源。而多线程共享一个进程的地址空间,其中一个线程任务失败会影响到其它线程任务。
图3-1 Nginx进程结构图
假设我们的Nginx服务的用户是nginx,我们可以使用如下命令查看当前运行的Nginx服务的master进程和worker进程,而且可以看到4个worker进程的父进程ID都是master的进程ID(1325)。
[root@master ~]# ps -ef | grep nginx | grep -v grep | grep -v php-fpm
root 1325 1 0 11:28 ? 00:00:00 nginx: master process /usr/local/nginx/sbin/nginx
nginx 1332 1325 0 11:28 ? 00:00:00 nginx: worker process
nginx 1334 1325 0 11:28 ? 00:00:00 nginx: worker process
nginx 1335 1325 0 11:28 ? 00:00:00 nginx: worker process
nginx 1336 1325 0 11:28 ? 00:00:00 nginx: worker process