CPU亲和(affinity)
把CPU核心和Nginx工作进程绑定方式,把每个worker进程固定在一个CPU上执行,减少切换CPU的cache miss,获的更好的性能。

进程结构

  1. # ps -ef|grep nginx
  2. root 7039 1 0 23:55 ? 00:00:00 nginx: master process nginx
  3. nobody 7044 7039 0 23:56 ? 00:00:00 nginx: worker process
  4. nobody 7045 7039 0 23:56 ? 00:00:00 nginx: worker process
  5. nobody 7046 7039 0 23:56 ? 00:00:00 nginx: worker process
  6. nobody 7047 7039 0 23:56 ? 00:00:00 nginx: worker process

进程管理信号

Master 进程
监控worker进程:CHLD
管理worker进程
接受信号:TERM,INT QUIT
HUP 重新加载
USR1 重新打开日志
USR2 WINCH
Worker进程
接受信号:TERM,INT QUIT USR1 WINCH
nginx 命令行
reload:HUP
reopen:USR1
stop:TERM
quit:QUIT

reload流程

1向master进程发送HUP信号
2 master 进程校验配置语法是否正确
3 master 进程打开新的监听端口
4 master进程用新配置启动新的work子进程
5 master进程向老work子进程发送QUIT信号
6 老worker进程关闭监听句柄,处理完当前连接后结束进程

热升级流程

1 将旧的Nginx文件换成新的Nginx文件(需要提前备份 需要-rf)
2 向master 进程发送USR2信号
3 master 进程修改pid 文件名,加后缀.oldbin
4 master 进程向新的Nigin文件启动新的master进程
5 向老master进程发送QUIT信号关闭老master进程
6回滚 向老master发送HUP 向新master发送QUIT

优雅的关闭work进程

1 设置定时器
2 关闭监听句柄
3 关闭空闲连接
4 在循环中等待全部连接关闭
5 退出进程

高可用

Nginx+keepalived:https://www.jianshu.com/p/bd4946ff59ec