欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

nginx的master進(jìn)程和worker進(jìn)程用法解讀

 更新時間:2025年07月10日 09:34:42   作者:新是一切的根源  
Nginx啟動后包含master和worker進(jìn)程,master負(fù)責(zé)管理worker及讀取配置,worker處理請求,通過worker_processes設(shè)置worker數(shù)量(通常不超過CPU核心數(shù))或auto自動檢測,結(jié)合worker_cpu_affinity綁定CPU核心以優(yōu)化性能

nginx的master進(jìn)程和worker進(jìn)程

當(dāng)你啟動nginx以后,使用ps命令查看nginx進(jìn)程, 會發(fā)現(xiàn)nginx進(jìn)程不只有一個,默認(rèn)情況下, 你會看到至少兩個nginx進(jìn)程,如下:

[root@server1 ~]# ps -ef |grep nginx |grep -v grep
root      2120     1  0 10:03 ?        00:00:00 nginx: master process nginx
nobody    2173  2120  0 10:30 ?        00:00:00 nginx: worker process
[root@server1 ~]# 

編譯安裝nginx后,默認(rèn)情況下worker進(jìn)程是以"nobody"用戶的身份運行的,如果我們想要指定worker進(jìn)程的運行用戶,則可以使用"user"指令,比如,

指定worker進(jìn)程以nginx用戶的身份運行

[root@server1 ~]# useradd -u 900 nginx
[root@server1 ~]# id nginx
uid=900(nginx) gid=1001(nginx) groups=1001(nginx)
[root@server1 ~]# 
user  nginx;
worker_processes  1;
[root@server1 ~]# vim /usr/local/nginx/conf/nginx.conf
[root@server1 ~]# nginx -s reload
[root@server1 ~]# ps -ef |grep nginx |grep -v grep
root      2120     1  0 10:03 ?        00:00:00 nginx: master process nginx
nginx     2206  2120  0 11:16 ?        00:00:00 nginx: worker process
[root@server1 ~]# 

當(dāng)我啟動nginx以后

有兩個nginx進(jìn)程,一個master進(jìn)程,一個worker進(jìn)程,這兩個nginx進(jìn)程都有各自的作用,見名知意, "worker"進(jìn)程天生就是來"干活"的,真正負(fù)責(zé)處理請求的進(jìn)程就是你看到的"worker"進(jìn)程,那么"master"進(jìn)程有什么用呢? “master"進(jìn)程其實是負(fù)責(zé)管理"worker"進(jìn)程的,除了管理” worker"進(jìn)程,master"進(jìn)程還負(fù)責(zé)讀取配置文件、判斷配置文件語法的工作,“master進(jìn)程"也叫"主進(jìn)程”,在nginx中,"master"進(jìn)程只能有一個,而"worker"進(jìn)程可以有多個,worker"進(jìn)程的數(shù)量可以由管理員自己進(jìn)行定義,那么怎么定義"worker"進(jìn)程的數(shù)量呢?

沒錯,我們只需要借助一條配置指令即可,

這條配指令就是"worker _processes"指令

默認(rèn)的nginx.conf配置文件中有這樣一條配置

worker_ processes 1;

上述配置的意思就是啟動nginx后只有1個worker進(jìn)程,你想要多少個worker進(jìn)程,將worker_ processe指令的值設(shè)置成多少就好了,非常簡單, worker_ processes指令只能在main區(qū)域中使用,通常情況下,

worker_ processes的值通常不會大于服務(wù)器中cpu的核心數(shù)量,

換句話說就是,worker進(jìn)程的數(shù)通常與服務(wù)器有多少

cpu核心有關(guān),比如,nginx所在主機(jī)擁有4核cpu,那么worker_ processes的值通常不會大于4,這樣做的原因是為了盡力讓每個worker進(jìn)程都有一個cpu可以使用,盡量避免了多個worker進(jìn)程搶占同一個cpu的情況,我們也可以將worker_ processes的值設(shè)置為"auto"

當(dāng)worker_ processes的值為auto時,nginx會自動檢測當(dāng)前主機(jī)的cpu核心數(shù),并啟動對應(yīng)數(shù)量的worker進(jìn)程,比如,

nginx檢測到當(dāng)前主機(jī)一共有4個cpu核心

那么nginx就會啟動4個worker進(jìn)程

user  nginx;
worker_processes  auto;
[root@server1 ~]# vim /usr/local/nginx/conf/nginx.conf
[root@server1 ~]# nginx -s reload
nginx: [alert] kill(2120, 1) failed (3: No such process)
[root@server1 ~]# nginx 
[root@server1 ~]# nginx -s reload
[root@server1 ~]# ps -ef | grep nginx |grep -v grep
root      2134     1  0 11:46 ?        00:00:00 nginx: master process nginx
nginx     2140  2134  0 11:46 ?        00:00:00 nginx: worker process
nginx     2141  2134  0 11:46 ?        00:00:00 nginx: worker process
nginx     2142  2134  0 11:46 ?        00:00:00 nginx: worker process
nginx     2143  2134  0 11:46 ?        00:00:00 nginx: worker process
[root@server1 ~]# 

同時,為了避免cpu在切換進(jìn)程時產(chǎn)生性能損耗,我們也可以將worker進(jìn)程與cpu核心進(jìn)行"綁定",當(dāng)worker進(jìn)程與cpu核心綁定以后,worker進(jìn)程可以更好的專注的使用某個cpu核心上的緩存,從而減少因為cpu切換不同worker進(jìn)程而帶來的緩存失效,如果想要讓worker進(jìn)程與某個cpu核心綁定,則需要借助另外一個配置指令,它就是"worker_ cpu_ affinity"指令

想要搞明白怎樣使用"worker_ cpu_ affinity" 指令,最好先來了解一個概念,這個概念就是"cpu掩碼",我們可以通過"cpu掩碼"表示某個cpu核心,

比如,當(dāng)前機(jī)器上一共有4個cpu核心,那么我們就用4個0表示這4個核,也就是說,我們可以使用如下字符表示這4個核:

0000

那么第一個核就用如下字符表示

0001

第二個核就用如下字符表示

0010

第三個核就用如下字符表示

0100

規(guī)律就是,有幾個核,就用幾個0表示,如果想要使用某個核,就將對應(yīng)位的0改成1,位從右邊開始

比如,如果有8個核,我就可以使用如下字符表示這8個核中的第二個核:

00000010

user  nginx;
worker_processes  auto;
worker_cpu_affinity 1000 0100 0010 0001;

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • nginx?攔截指定ip訪問指定url的實現(xiàn)示例

    nginx?攔截指定ip訪問指定url的實現(xiàn)示例

    本文主要介紹了nginx?攔截指定ip訪問指定url的實現(xiàn)示例,使用$http_x_forwarded_for變量來獲取客戶端的真實IP地址,感興趣的可以了解一下
    2024-12-12
  • nginx中狀態(tài)統(tǒng)計的實現(xiàn)

    nginx中狀態(tài)統(tǒng)計的實現(xiàn)

    本文主要介紹了nginx中狀態(tài)統(tǒng)計的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • Nginx正向反向代理區(qū)別及原理解析

    Nginx正向反向代理區(qū)別及原理解析

    這篇文章主要介紹了Nginx正向反向代理區(qū)別及原理解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-03-03
  • Nginx緩存&優(yōu)雅清除緩存問題

    Nginx緩存&優(yōu)雅清除緩存問題

    本文詳細(xì)介紹了Nginx的緩存配置,包括緩存文件的存儲路徑、緩存的有效期、哪些請求走緩存、哪些請求不緩存,以及如何刪除緩存,同時,還提供了一個綜合案例來說明如何配置和使用Nginx緩存
    2025-03-03
  • 深入了解nginx主配置文件

    深入了解nginx主配置文件

    Nginx的主配置文件nginx.conf關(guān)鍵于定義Nginx的基本設(shè)置與全局配置,包括工作進(jìn)程數(shù)、錯誤日志路徑與級別、進(jìn)程ID文件路徑、事件處理模型、HTTP模塊設(shè)置等,本文就來介紹一下,感興趣的可以了解一下
    2024-11-11
  • Nginx服務(wù)器下防盜鏈的方法介紹

    Nginx服務(wù)器下防盜鏈的方法介紹

    這篇文章主要介紹了Nginx服務(wù)器下防盜鏈的方法介紹,主要通過修改服務(wù)器的配置文件來實現(xiàn),需要的朋友可以參考下
    2015-07-07
  • Nginx熱部署的實現(xiàn)

    Nginx熱部署的實現(xiàn)

    本文主要介紹了Nginx熱部署的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • nginx 反向代理之 proxy_pass的實現(xiàn)

    nginx 反向代理之 proxy_pass的實現(xiàn)

    這篇文章主要介紹了nginx 反向代理之 proxy_pass的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • nginx反向代理https內(nèi)部定向到http報302的問題及解決

    nginx反向代理https內(nèi)部定向到http報302的問題及解決

    這篇文章主要介紹了nginx反向代理https內(nèi)部定向到http報302的問題及解決,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • nginx信號集案例詳解

    nginx信號集案例詳解

    本篇內(nèi)容給大家詳細(xì)分析一下nginx信號集相關(guān)知識以及實例中的問題分析,一起學(xué)習(xí)參考下。
    2017-11-11

最新評論