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
?
?
總結
以上是生活随笔為你收集整理的Nginx笔记-Nginx中进程结构及使用Linux信号量管理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java工作笔记-IntelliJ ID
- 下一篇: MySQL笔记-左连接的使用(left