一個nginx: master?進(jìn)程,同時會開啟,幾個nginx: worker process
Nginx會按需同時運(yùn)行多個進(jìn)程:一個主進(jìn)程(master)和幾個工作進(jìn)程(worker),配置了緩存時還會有緩存加載器進(jìn)程(cache loader)和緩存管理器進(jìn)程(cache manager)等。 ? ?(推薦學(xué)習(xí):nginx教程)
所有進(jìn)程均是僅含有一個線程,并主要通過“共享內(nèi)存”的機(jī)制實(shí)現(xiàn)進(jìn)程間通信。主進(jìn)程以root用戶身份運(yùn)行,而worker、cache loader和cache manager均應(yīng)以非特權(quán)用戶身份運(yùn)行。
通過ps –ef | grep nginx可以看到共有三個進(jìn)程,一個master進(jìn)程,兩個worker進(jìn)程。
nginx是多進(jìn)程結(jié)構(gòu),多進(jìn)程結(jié)構(gòu)設(shè)計是為了保證nginx的高可用高可靠,包含:
主進(jìn)程(Master Process)
主要完成如下工作:
讀取并驗正配置信息;
創(chuàng)建、綁定及關(guān)閉套接字;
啟動、終止及維護(hù)worker進(jìn)程的個數(shù);
無須中止服務(wù)而重新配置工作特性;
控制非中斷式程序升級,啟用新的二進(jìn)制程序并在需要時回滾至老版本;
重新打開日志文件,實(shí)現(xiàn)日志滾動;
編譯嵌入式perl腳本;
?工作進(jìn)程(Worker Process)
接收、傳入并處理來自客戶端的連接;
提供反向代理及過濾功能;
nginx任何能完成的其它任務(wù);
緩存索引重建及進(jìn)程管理(Cache Loader & Cache Manager)
Cache模塊,主要由緩存索引重建(Cache Loader)和緩存索引管理(Cache Manager)兩類進(jìn)程完成工作。緩存索引重建進(jìn)程是在Nginx服務(wù)啟動一段時間之后(默認(rèn)是1分鐘)由主進(jìn)程生成,在緩存元數(shù)據(jù)重建完成后就自動退出;緩存索引管理進(jìn)程一般存在于主進(jìn)程的整個生命周期,負(fù)責(zé)對緩存索引進(jìn)行管理。
cache loader進(jìn)程主要完成的任務(wù)包括:
檢查緩存存儲中的緩存對象;
使用緩存元數(shù)據(jù)建立內(nèi)存數(shù)據(jù)庫;
cache manager進(jìn)程的主要任務(wù):
緩存的失效及過期檢驗;