一:nginx的整體結構
(1.1)master進程和worker進程概覽(父子關係)
//啓動nginx,看到了一個master進程,一個worker進程
//ps -ef命令
//第一列:UID,進程所屬的用戶id
//第二列:進程ID(PID),用來唯一的標識一個進程
//第三列:父進程ID(PPID)。 fork(),worker進程是被master進程通過fork()創建出來的-worker進程是master進程的子進程,master是父進程
(1.2)nginx進程模型
//1個master進程,1到多個worker進程 這種工作機制來對外服務的;這種工作機制保證了 nginx能夠穩定、靈活的運行;
//a)master進程責任:監控進程,不處理具體業務,專門用來管理和監控worker進程;master,角色是監工,比如清閒;
//b)worker進程:用來幹主要的活的,(和用戶交互);
//c)master進程和worker進程之間要通訊,可以用 信號 ,也可以用 共享內存 ;
//d)穩定性,靈活性,體現之一:worker進程 一旦掛掉,那麼master進程會立即fork()一個新的worker進程投入工作中去;
(1.3)調整worker進程數量
//worker進程幾個合適呢?公認的做法: 多核計算機,就讓每個worker運行在一個單獨的內核上,最大限度減少CPU進程切換成本,提高系統運行效率;
//物理機:4核(4個processors);
//工作站:2個物理cpu ,藍色的一個cpu,紅色的一個cpu
//每個物理cpu裏邊內核數量,是4個;core1 --core4
//每個core裏邊有兩個邏輯處理器(超線程技術/siblings)
//16個processors(最細小的單位,也就是平時大家說的處理器個數)
二:nginx進程模型細說
//穩定 ,靈活
//(2.1)nginx重載配置文件
//(2.2)nginx熱升級,熱回滾
//(2.3)nginx的關閉
//(2.4)總結
//多進程,多線程:
//多線程模型的弊端:共享內存,如果某個線程報錯一定會影響到其他線程,最終會導致整個服務器程序崩潰;