nginx源码学习,第一节,一些准备
结构
master进程父进程1,
worker进程的父进程,master进程,fork()
一个master多个master
如下图:
第一个是用户
,第二个是进程UUID
,第三个是父进程id
,之后还可以看到进程名字
,如master process
, worker process
通过进程id和父进程id可以看到,worker process
的父进程
都是master进程
进程模型
master进程,监控进程,不处理具体逻辑,专门管理worker进程
worker用来处理具体逻辑
查看进程:ps -ef | grep nginx
通信方法
master与worker进程之间的通信,方法:信号,共享内存
稳定性
如果worker进程死掉一个,master会立即按照配置文件,启动新的worker进程
是worker进程数量保持在配置文件中指定的
例如杀死一个worker进程,自动增加一个
kill processId
效果如下:
- 几个进程数量合适?
多核cpu,每个worker进程单独占一个内核(processor),让cpu尽量少的切换
查看processor的数量: grep -c processor /proc/cpuinfo
给nginx配置worker进程的数量
首先要把nginx注册进去才能进行关闭
nginx/conf/nginx.conf设置worker 为4
nginx灵活性:
nginx的命令:
查找:./nginx -?
例子:
1、动态重新加载conf文件,这样就是在不关闭nginx时就直接更改
./nginx -s reload
2、热升级,热回滚
结束nginx
1、杀master进程
2、./nginx -s quit(正常关闭)/stop(简单粗暴)
nginx是多进程模型,不是多线程
多线程是内存共享的,一个进程出错,其他的一定会受影响
多进程
-
linux的使用命令方式,
systemctl stop/start/restart serviceName -
nginx源码,c语言写的,nginx/src里面,每一个文件夹看名字就可以区分不同的模块儿
-
搜索main函数,这是入口函数