1.master 进程和 worker 进程
ps -ef
命令:
-
第一列:UID,进程所属的用户ID。
-
第二列:PID,唯一地标识一个进程。
-
第三列:PPID,父进程ID。可以看到,worker 进程是 master 进程的子进程,即 worker 进程是被 master 进程通过 fork() 函数创建出来的。
1 1 1 个 master 进程、 1 1 1 到多个 worker 进程,这种工作机制保证了 nginx 能够稳定、灵活地运行。
master 进程:监控进程,不处理具体业务,专门用来管理和监控 worker 进程。
worker 进程:用来处理具体业务,和用户交互。
master 进程和 worker 进程之间要通讯,可以用信号
,也可以用共享内存
。
worker 进程一旦挂掉,那么 master 进程会立即 fork() 一个新的 worker 进程投入工作中去。
2.调整 worker 进程数量
worker 进程几个合适呢?
公认的做法:对于多核计算机来说,让每个 worker 进程运行在一个单独的内核(processor)上,最大限度地减少CPU进程切换的成本,提高系统运行效率。
下面我们手动地将 Ubuntu 虚拟机的 processor 数量调整为 4
:
查看 processor 数量的命令如下:
grep -c processor /proc/cpuinfo
接下来,我们修改 /usr/local/nginx/conf
目录下的 nginx.conf
文件以创建 4
个 worker 进程:
启动 nginx,可以看到 1 1 1 个 master 进程、 4 4 4 个 worker 进程,如下图所示:
3.nginx 重载配置文件
查看启动 nginx 命令的帮助文档:
./nginx -?
在不中断 nginx 的前提下,重载配置文件的命令如下:
sudo ./nginx -s reload
nginx能够热升级,也能够热回滚。
4.nginx 的关闭
粗暴地退出:
sudo ./nginx -s stop
优雅地退出:
sudo ./nginx -s quit