Nginx笔记-Nginx中进程结构及使用Linux信号量管理

首先是Apache和Nginx的区别(这里只提Nginx的好处)

Apache处理请求性能低。

Apache:一个进程处理一个请求,阻塞式;

Nginx:一个进程处理多个请求,非阻塞式;

Nginx的应用场景

Nginx只能处理静态资源,动态资源还得反向代理到应用服务器上。

下面是Nginx处理请求的过程:

Nginx有点及特点

热部署、平滑升级、开源及二次开发、高并发高性能、扩展性好、异步非阻塞的事件驱动模型

Nginx是多进程结构:

主进程Master Process管理如下几个进程:

CM(Cacah Manager)、CL(Cacah Loader)、Worker Process(这个在一般在配置文件中为auto,会根据CPU核数自己生成)。

Master Process有进程管理的功能,会把挂掉的进程拉起来,所以如果要改源码扩展尽可能不要修改Master Process。

Cacah Loader用于加载缓存

Cacah Manager用于管理缓存

而正在存储缓存的地方是在worker process里面。所有子进程都是用共享内存的方式进行通信。

下面是Linux的信号量管理机制。

最关键的就是kill关键字:

一共有64个指令,要弄清楚如下几个:

Kill -17 $PID                #父子进程通信的信号量,子进程挂了,会给父进程发信号

Kill -3 $PID                  #将应用的运行情况dump下来。由于可以吧所有线程当前运行到哪里的情况输出

Kill -15 $PID                #普通的Kill,程序退出,如果卡死,是杀不了的

Kill -9 $PID                  #不管在干嘛,阻塞,运行都kill

Kill -1 $PID                  #重新加载配置文件

利用信号量进行管理Nginx

一般不建议直接对worker进程进行管理,而是使用manager去管理

nignx是事件绑定的,他的worker子进程一般是你电脑有几颗cpu就给你多少个

在配置文件里面有个worker_processes一般是auto就是nginx自己去检测的。

如下所示:

当前Nginx只有一个worker process,原因是我这台只有一个cpu

可以通过修改配置文件,来改变,如下:

改成4,然后进行重载配置文件

这里有两条命令:

./nginx -reload
kill -1 xxxx

就可以看到:

有4个worker process了。

这里如果要改源码或者其他的操作,一般都是对worker process线程进行。

另外是./nginx -h为help

发布了1314 篇原创文章 · 获赞 2609 · 访问量 185万+

猜你喜欢

转载自blog.csdn.net/qq78442761/article/details/105116226