[TOC] #### 1. 前言 --- 熟悉 nginx 運行原理的都知道,nginx 服務啟動后,會有一個 master 進程和多個 worker 進程,master 進程負責管理所有的 worker 進程,worker 進程負責處理和接收用戶請求 在這里我們所要研究的是 master 進程一定要創建 worker 進程嗎 ?以及能夠創建多少個 worker 進程呢 ? 這些內容其實我們都可以通過修改 nginx 的配置文件來進行指定,接下來我們來學習一些相關的配置指令 #### 2. master_process --- master_process 是全局塊配置,配置文件中默認沒有該參數,用來指定是否開啟 worker 進程 ``` # 開啟(默認值) master_process on; # 關閉 master_process off; ``` 打開 nginx.conf 文件,添加 master_process 指令關閉 worker 進程 ```bash # 編輯 nginx.conf vim /usr/local/nginx/conf/nginx.conf # 添加內容 master_process off; # 查看 nginx.conf 前 7 行 cat /usr/local/nginx/conf/nginx.conf | head -n 7 ``` ![](https://img.itqaq.com/art/content/4f57acfb32523ff505bb3ee28d30c802.png) 一般情況下,修改配置文件后,運行重載配置命令后就會生效,但是 master_process 不會生效 ```bash /usr/local/nginx/sbin/nginx -s reload ``` 必須重啟 nginx 服務才會生效,也就是先停止 nginx 服務,再重新啟動 nginx 服務 ```bash /usr/local/nginx/sbin/nginx -s stop /usr/local/nginx/sbin/nginx ps -ef | grep nginx ``` ![](https://img.itqaq.com/art/content/279233e1fd03981edaa9ff4fc6497038.png) #### 3. worker_processes --- worker_processes 也是全局塊配置,用于配置 nginx 生成 worker 進程的數量,是 nginx 實現并發處理服務的關鍵所在 理論上來說,worker_processes 的值越大,生成的 worker 進程的數量就越多,可以支持的并發處理量也越多 但事實上,這個值的設定會受到來自服務器本身的限制,實際配置過程中,關于它的配置,內核數,磁盤,服務器的負載等等都有相關因素,不能因為某一個元素來決定配置多少個數量,建議將該值和服務器 CPU 的內核數保持一致 配置示例: ``` # 生成兩個 worker 進程(默認值) worker_processes 1; # 生成兩個 worker 進程 worker_processes 2; # 自動分配 worker_processes auto; ``` 測試效果:將 worker_processes 的數量修改為 2 重載配置是不生效的,需要重啟 nginx 服務,然后查看 nginx 相關進程即可 ```bash /usr/local/nginx/sbin/nginx -s stop /usr/local/nginx/sbin/nginx ps -ef | grep nginx ``` ![](https://img.itqaq.com/art/content/a6960f7483568408a3a5f401d5f0e460.png)