[TOC] #### 1. 前言 --- 熟悉 nginx 運(yùn)行原理的都知道,nginx 服務(wù)啟動(dòng)后,會(huì)有一個(gè) master 進(jìn)程和多個(gè) worker 進(jìn)程,master 進(jìn)程負(fù)責(zé)管理所有的 worker 進(jìn)程,worker 進(jìn)程負(fù)責(zé)處理和接收用戶(hù)請(qǐng)求 在這里我們所要研究的是 master 進(jìn)程一定要?jiǎng)?chuàng)建 worker 進(jìn)程嗎 ?以及能夠創(chuàng)建多少個(gè) worker 進(jìn)程呢 ? 這些內(nèi)容其實(shí)我們都可以通過(guò)修改 nginx 的配置文件來(lái)進(jìn)行指定,接下來(lái)我們來(lái)學(xué)習(xí)一些相關(guān)的配置指令 #### 2. master_process --- master_process 是全局塊配置,配置文件中默認(rèn)沒(méi)有該參數(shù),用來(lái)指定是否開(kāi)啟 worker 進(jìn)程 ``` # 開(kāi)啟(默認(rèn)值) master_process on; # 關(guān)閉 master_process off; ``` 打開(kāi) nginx.conf 文件,添加 master_process 指令關(guān)閉 worker 進(jìn)程 ```bash # 編輯 nginx.conf vim /usr/local/nginx/conf/nginx.conf # 添加內(nèi)容 master_process off; # 查看 nginx.conf 前 7 行 cat /usr/local/nginx/conf/nginx.conf | head -n 7 ``` ![](https://img.itqaq.com/art/content/4f57acfb32523ff505bb3ee28d30c802.png) 一般情況下,修改配置文件后,運(yùn)行重載配置命令后就會(huì)生效,但是 master_process 不會(huì)生效 ```bash /usr/local/nginx/sbin/nginx -s reload ``` 必須重啟 nginx 服務(wù)才會(huì)生效,也就是先停止 nginx 服務(wù),再重新啟動(dòng) nginx 服務(wù) ```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 進(jìn)程的數(shù)量,是 nginx 實(shí)現(xiàn)并發(fā)處理服務(wù)的關(guān)鍵所在 理論上來(lái)說(shuō),worker_processes 的值越大,生成的 worker 進(jìn)程的數(shù)量就越多,可以支持的并發(fā)處理量也越多 但事實(shí)上,這個(gè)值的設(shè)定會(huì)受到來(lái)自服務(wù)器本身的限制,實(shí)際配置過(guò)程中,關(guān)于它的配置,內(nèi)核數(shù),磁盤(pán),服務(wù)器的負(fù)載等等都有相關(guān)因素,不能因?yàn)槟骋粋€(gè)元素來(lái)決定配置多少個(gè)數(shù)量,建議將該值和服務(wù)器 CPU 的內(nèi)核數(shù)保持一致 配置示例: ``` # 生成兩個(gè) worker 進(jìn)程(默認(rèn)值) worker_processes 1; # 生成兩個(gè) worker 進(jìn)程 worker_processes 2; # 自動(dòng)分配 worker_processes auto; ``` 測(cè)試效果:將 worker_processes 的數(shù)量修改為 2 重載配置是不生效的,需要重啟 nginx 服務(wù),然后查看 nginx 相關(guān)進(jìn)程即可 ```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)