Linux的Nginx五:进程|过程
進程
master進程
Nginx在啟動后,會有一個master進程和多個worker進程。master進程主要用來管理worker進程,包含:接收來自外界的信號,向各worker進程發(fā)送信號,監(jiān)控 worker進程的運行狀態(tài),當worker進程退出后(異常情況下),會自動重新啟動新的worker進程。
worker進程
基本的網(wǎng)絡事件,則是放在worker進程中來處理了。多個worker進程之間是對等的,他們同等競爭來自客戶端的請求,各進程互相之間是獨立的。一個請求,只可能在一個worker進程中處理,一個worker進程,不可能處理其它進程的請求。worker進程的個數(shù)是可以設置的,一般我們會設置與機器CPU核數(shù)一致,這里面的原因與Nginx的進程模型以及事件處理模型是分不開的。
?
過程
1.啟動--Nginx在啟動時,會解析配置文件,得到需要監(jiān)聽的端口與IP地址,
2.初始化-然后在Nginx的master進程里面,先初始化好這個監(jiān)控的socket(創(chuàng)建socket,設置addrreuse等選項,綁定到指定的IP地址端口,再listen),
3.多進程--然后再fork(一個現(xiàn)有進程可以調用fork函數(shù)創(chuàng)建一個新進程。由fork創(chuàng)建的新進程被稱為子進程(work進程) )出多個子進程出來,然后子進程會競爭accept新的連接。?
4.連接--此時,客戶端就可以向Nginx發(fā)起連接了。當客戶端與Nginx進行三次握手,與Nginx建立好一個連接后,某一個子進程會accept成功,得到這個建立好的連接的socket,然后創(chuàng)建Nginx對連接的封裝,即ngx_connection_t結構體。?
5.交換--接著,設置讀寫事件處理函數(shù)并添加讀寫事件來與客戶端進行數(shù)據(jù)的交換。最后,Nginx或客戶端來主動關掉連接,到此,一個連接就壽終正寢了。
應用
在近期一些項目的開發(fā)過程中,主要是使用Nginx和Tomcat來搭建高性能負載均衡集群,
即使用Nginx的反向代理功能來實現(xiàn)請求的分發(fā),關于Nginx和Tomcat的組合使用,不在這里重復造輪子
?
總結
以上是生活随笔為你收集整理的Linux的Nginx五:进程|过程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 厦门钨业是国企吗
- 下一篇: linux 其他常用命令