欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品

主頁(yè) > 知識(shí)庫(kù) > Nginx進(jìn)程管理和重載原理詳解

Nginx進(jìn)程管理和重載原理詳解

熱門(mén)標(biāo)簽:怎么找到?jīng)]有地圖標(biāo)注的店 麗江真人語(yǔ)音電話外呼系統(tǒng) 上海申請(qǐng)高400開(kāi)頭的電話 打400電話怎么辦理收費(fèi) 宿城區(qū)電話機(jī)器人找哪家 河南防封號(hào)電銷(xiāo)機(jī)器人是什么 福州企業(yè)電銷(xiāo)機(jī)器人排名 400電話辦理介紹信 10086外包用的什么外呼系統(tǒng)

進(jìn)程結(jié)構(gòu)圖

Nginx是多進(jìn)程結(jié)構(gòu),多進(jìn)程結(jié)構(gòu)設(shè)計(jì)是為了保證Nginx的高可用高可靠,包含:

  • master進(jìn)程:父進(jìn)程,負(fù)責(zé)worker進(jìn)程的管理
  • worker進(jìn)程:子進(jìn)程,worker進(jìn)程一般配置與服務(wù)器CPU核數(shù)相同,worker進(jìn)程用來(lái)處理具體請(qǐng)求。
  • cache進(jìn)程:也是子進(jìn)程,包括cache manager和cache loader進(jìn)程,主要是反向代理做緩存使用。

注:多進(jìn)程相對(duì)于多線程之所以能夠保證高可用與高可靠是因?yàn)檫M(jìn)程間地址空間是獨(dú)立的,進(jìn)程間的任務(wù)不會(huì)相互影響,相對(duì)多線程更加耗費(fèi)CPU資源。而多線程共享一個(gè)進(jìn)程的地址空間,其中一個(gè)線程任務(wù)失敗會(huì)影響到其它線程任務(wù)。

圖3-1 Nginx進(jìn)程結(jié)構(gòu)圖

假設(shè)我們的Nginx服務(wù)的用戶是nginx,我們可以使用如下命令查看當(dāng)前運(yùn)行的Nginx服務(wù)的master進(jìn)程和worker進(jìn)程,而且可以看到4個(gè)worker進(jìn)程的父進(jìn)程ID都是master的進(jìn)程ID(1325)。

[root@master ~]# ps -ef | grep nginx | grep -v grep | grep -v php-fpm
root       1325      1  0 11:28 ?        00:00:00 nginx: master process /usr/local/nginx/sbin/nginx
nginx      1332   1325  0 11:28 ?        00:00:00 nginx: worker process
nginx      1334   1325  0 11:28 ?        00:00:00 nginx: worker process
nginx      1335   1325  0 11:28 ?        00:00:00 nginx: worker process
nginx      1336   1325  0 11:28 ?        00:00:00 nginx: worker process

圖3-2 一個(gè)master進(jìn)程與四個(gè)worker子進(jìn)程

我們可以通過(guò) lsof -i:nginx端口號(hào) 來(lái)查看我們的master和worker進(jìn)程。

[root@master ~]# lsof -i:80
COMMAND  PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
nginx   1325  root    6u  IPv4  22282      0t0  TCP *:http (LISTEN)
nginx   1332 nginx    6u  IPv4  22282      0t0  TCP *:http (LISTEN)
nginx   1334 nginx    6u  IPv4  22282      0t0  TCP *:http (LISTEN)
nginx   1335 nginx    6u  IPv4  22282      0t0  TCP *:http (LISTEN)
nginx   1336 nginx    6u  IPv4  22282      0t0  TCP *:http (LISTEN)

信號(hào)量管理

Linux的信號(hào)量管理機(jī)制

信號(hào)是進(jìn)程間通信方式之一,典型用法是:終端用戶輸入中斷命令,通過(guò)信號(hào)機(jī)制停止一個(gè)程序的運(yùn)行。

我們可以通過(guò)給進(jìn)程發(fā)送信號(hào)來(lái)管理我們的進(jìn)程,kill -l命令可以查看linux支持的信號(hào)量

linux信號(hào)量

一共有64號(hào)信號(hào)量,主要需要弄清如下幾個(gè):

kill -1 $PID:(SIGHUP)重新加載進(jìn)程,對(duì)于與終端脫離關(guān)系的守護(hù)進(jìn)程,這個(gè)信號(hào)用于通知它重新讀取配置文件;

kill -2 $PID:(SIGINT)中斷(通Ctrl+C);

kill -3 $PID:(SIGQUIT)從鍵盤(pán)輸入的退出(ctrl-\);

kill -9 $PID:(SIGKILL)立即殺死進(jìn)程,無(wú)論當(dāng)前程序處于什么狀態(tài);

kill -10 $PID:(SIGUSR1)$USR1和$USR2都是留給用戶自定義的信號(hào)量;

kill -12 $PID:($IGUSR2)

kill -15 $PID:(SIGTERM)正常停止一個(gè)進(jìn)程;

kill -17 $PID:(SIGCHLD)父子進(jìn)程通信的信號(hào)量,父進(jìn)程可以fork()出很多子進(jìn)程,子進(jìn)程掛掉會(huì)給父進(jìn)程發(fā)送信號(hào);

kill 可將指定的信息送至程序。預(yù)設(shè)的信息為 SIGTERM(15),可將指定程序終止。若仍無(wú)法終止該程序,可使用 SIGKILL(9) 信息嘗試強(qiáng)制刪除程序。程序或工作的編號(hào)可利用 ps 指令或 jobs 指令查看。

kill -l # 查看所有能夠支持的信號(hào)
kill PID
# 殺死一個(gè)進(jìn)程
kill 1024
# 殺死多個(gè)進(jìn)程 進(jìn)程號(hào)之間用空格隔開(kāi)
kill 1024 2048
# kill -9 表示立即強(qiáng)制結(jié)束進(jìn)程
kill -9 1024

注:Ctrl+C:停止終端中正在運(yùn)行的進(jìn)程,Ctrl+C可以比較有好地中止終端中正在運(yùn)行的程序(進(jìn)程)

利用信號(hào)量管理Nginx進(jìn)程

管理Nginx進(jìn)程可以這些方式:master進(jìn)程、worker進(jìn)程命令行

使用信號(hào)量管理master和worker(不推薦使用發(fā)送信號(hào)量的方式來(lái)管理worker進(jìn)程,worker進(jìn)程應(yīng)該交給master進(jìn)程來(lái)管理和維護(hù))。

Master進(jìn)程

監(jiān)控worker進(jìn)程

  • CHLD

管理worker進(jìn)程

接收信號(hào)

  • TERM、INT
  • QUIT
  • HUP
  • USR1
  • USR2
  • WINCH

示例:

通過(guò)kill命令殺死m(xù)aster進(jìn)程

kill -s SIGTERM 1325

通過(guò)kill命令讓Nginx重新讀取文件,這樣會(huì)關(guān)閉就得worker進(jìn)程,生成新的worker進(jìn)程,master進(jìn)程(ID)依舊保持不變

kill -s SIGHUP 1325

Worker進(jìn)程

接收信號(hào)

  • TERM、INT
  • QUIT
  • USR1
  • WINCH

雖然可以,但是不推薦使用信號(hào)量方式直接管理worker進(jìn)程,worker進(jìn)程應(yīng)該交給master進(jìn)程來(lái)管理和維護(hù)

示例:

使用kill命令殺死一個(gè)worker進(jìn)程,這樣會(huì)殺死一個(gè)worker進(jìn)程,linux會(huì)殺掉的worker進(jìn)程的父進(jìn)程(master進(jìn)程)發(fā)送SIGCHLD信號(hào)量,所以master進(jìn)程監(jiān)測(cè)到我們某一個(gè)子進(jìn)程可能出了問(wèn)題,會(huì)啟動(dòng)一個(gè)新的worker進(jìn)程,維護(hù)worker進(jìn)程的數(shù)量。

kill -s SIGTERM 1332

命令行

  • reload:HUP
  • reopen:USR2
  • stop:TERM
  • quit:QUIT

可以使用nginx -h查看幫助命令

[itbsl@master ~]$ nginx -h
nginx version: nginx/1.18.0
Usage: nginx [-?hvVtTq] [-s signal] [-c filename] [-p prefix] [-g directives]

Options:
  -?,-h         : this help
  -v            : show version and exit
  -V            : show version and configure options then exit
  -t            : test configuration and exit
  -T            : test configuration, dump it and exit
  -q            : suppress non-error messages during configuration testing
  -s signal     : send signal to a master process: stop, quit, reopen, reload
  -p prefix     : set prefix path (default: /usr/local/nginx-1.18.0/)
  -c filename   : set configuration file (default: conf/nginx.conf)
  -g directives : set global directives out of configuration file

參數(shù)說(shuō)明:

  • -?,-h:查看幫助
  • -v:查看Nginx版本
  • -V:查看Nginx版本和編譯選項(xiàng)
  • -t:檢查配置文件語(yǔ)法是否正確
  • -T:檢查配置文件語(yǔ)法是否正確,并打印
  • -q:在檢查配置文件時(shí)不顯示非錯(cuò)誤消息
  • -s:給master進(jìn)程發(fā)送信號(hào),可以發(fā)送:stop、quit、reopen、reload
  • -c:指定配置文件
  • -g:設(shè)置配置文件之外的全局指令

配置文件重載原理

我們知道了可以通過(guò)給nginx的master進(jìn)程發(fā)送SIGHUP信號(hào),或者使用nginx -s reload命令來(lái)達(dá)到重新載入配置文件,從而使nginx平滑升級(jí)。那我們執(zhí)行這樣一個(gè)命令之后,對(duì)nginx本身來(lái)說(shuō)背后發(fā)生了什么事情呢,它是如何保證新老請(qǐng)求如何平滑過(guò)渡的?

reload重載配置文件的流程

  • 向master進(jìn)程發(fā)送HUP信號(hào)(reload命令)
  • master進(jìn)程檢查配置語(yǔ)法是否正確
  • master進(jìn)程打開(kāi)監(jiān)聽(tīng)端口(在修改配置文件的端口情況下,可能)
  • master進(jìn)程使用新的配置文件啟動(dòng)新的worker子進(jìn)程
  • master進(jìn)程向老的worker子進(jìn)程發(fā)送QUIT信號(hào)
  • 舊的worker進(jìn)程關(guān)閉監(jiān)聽(tīng)句柄,處理完當(dāng)前連接后關(guān)閉進(jìn)程

如果用圖示來(lái)描述的話大概如下圖所示

nginx -s reload

圖示解析:

1.左邊綠色的狀態(tài)是執(zhí)行nginx -s reload命令之前的狀態(tài),按照我個(gè)人主機(jī)的配置時(shí)一個(gè)master進(jìn)程和4個(gè)worker子進(jìn)程。

2.為了模擬執(zhí)行nginx -s reload命令后原來(lái)的worker進(jìn)程會(huì)處理完請(qǐng)求后再被殺掉,我模擬一個(gè)需要很久才能處理完任務(wù)并響應(yīng)的接口,是的,我在代碼里sleep 15秒,也就是說(shuō)這個(gè)接口響應(yīng)需要15秒,時(shí)間弄長(zhǎng)點(diǎn)方便我們來(lái)觀察中間態(tài),注意,在執(zhí)行reload命令前請(qǐng)求該接口

<?php
    sleep(15);
    echo json_encode(['msg' => 'hello world']);die();

3.我們已經(jīng)知道了master進(jìn)程會(huì)把任務(wù)交給worker子進(jìn)程處理,目前只有一個(gè)任務(wù),所以當(dāng)前只需要一個(gè)worker進(jìn)程需要處理任務(wù)。

4.執(zhí)行reload命令,master進(jìn)程會(huì)創(chuàng)建4個(gè)(與你配置有關(guān))新的worker進(jìn)程(我上圖中的黃色worker進(jìn)程),關(guān)閉掉舊的空閑worker進(jìn)程(綠色worker進(jìn)程),而正在處理請(qǐng)求的舊worker進(jìn)程不會(huì)立即關(guān)閉,而是會(huì)等請(qǐng)求處理完畢就關(guān)閉。

5.剩下的最后一個(gè)舊worker進(jìn)程任務(wù)處理完畢也被關(guān)掉,最后剩下的都是使用新nginx.conf配置產(chǎn)生的新worker進(jìn)程,可以看下面的這張圖,那個(gè)處于is shutting down的舊worker進(jìn)程就是因?yàn)樘幚砩厦鎠leep 15秒的任務(wù)接口還沒(méi)處理完畢,所以依然能夠被看到。

總結(jié)

到此這篇關(guān)于Nginx進(jìn)程管理和重載原理的文章就介紹到這了,更多相關(guān)Nginx進(jìn)程管理和重載原理內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

標(biāo)簽:雞西 荊門(mén) 隴南 運(yùn)城 朝陽(yáng) 遵義 面試通知 連云港

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Nginx進(jìn)程管理和重載原理詳解》,本文關(guān)鍵詞  Nginx,進(jìn)程,管理,和,重載,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Nginx進(jìn)程管理和重載原理詳解》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于Nginx進(jìn)程管理和重載原理詳解的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品
  • <rt id="w000q"><acronym id="w000q"></acronym></rt>
  • <abbr id="w000q"></abbr>
    <rt id="w000q"></rt>
    欧美激情中文字幕一区二区| 亚洲黄色av一区| 亚洲国产美国国产综合一区二区| 国产成人免费在线观看不卡| a级大片在线观看| 在线综合亚洲欧美在线视频| 一区二区三区资源| 不卡电影一区二区三区| 五月天激情丁香| 中文字幕乱码亚洲精品一区| 激情综合色播五月| 人妻一区二区视频| 久久免费偷拍视频| 国内精品嫩模私拍在线| 嘿嘿视频在线观看| ww亚洲ww在线观看国产| 免费在线观看视频一区| 特大黑人巨人吊xxxx| 日韩欧美综合一区| 免费成人在线视频观看| 97超碰在线资源| 精品成人a区在线观看| 激情综合色综合久久综合| 色婷婷国产精品免| 国产三级久久久| 国产a久久麻豆| 看片网站在线观看| 亚洲精品欧美激情| 欧美做受高潮中文字幕| 欧美美女一区二区三区| 五月婷婷综合在线| 人妻精品久久久久中文字幕| 亚洲精品在线免费观看视频| 精品一区二区久久| 国内毛片毛片毛片毛片毛片| 1000部国产精品成人观看| gogo大胆日本视频一区| 欧美综合亚洲图片综合区| 亚洲一区二区三区四区在线观看| 日本精品一二三区| 日韩精品在线一区| 国产成人亚洲综合a∨婷婷图片| 在线观看黄网址| 亚洲另类春色校园小说| 欧美极品jizzhd欧美仙踪林| 欧美va亚洲va| 国产99精品视频| 欧洲av在线精品| 美女视频黄免费的久久| 我要看一级黄色录像| 亚洲免费观看高清完整版在线观看 | zzijzzij亚洲日本少妇熟睡| 色哟哟国产精品免费观看| 久久综合久久综合九色| 丁香激情综合国产| 色婷婷激情久久| 日韩主播视频在线| 少妇精品无码一区二区免费视频| 日本一区二区综合亚洲| 波多野结衣精品在线| 欧美日韩夫妻久久| 久久精品国产一区二区三区免费看 | 777777国产7777777| 亚洲日本va在线观看| 深田咏美中文字幕| 久久久五月婷婷| www.欧美色图| 欧美一级久久久| 日韩黄色免费电影| 国产小视频你懂的| 一区二区成人在线| a毛片毛片av永久免费| 国产欧美日本一区视频| 91片黄在线观看| 欧美不卡在线视频| 从欧美一区二区三区| 91极品美女在线| 麻豆成人91精品二区三区| 精品国产精品国产精品| 亚洲一区成人在线| 亚洲一级黄色录像| 亚洲精品视频一区| 国产三级短视频| 亚洲一区二区中文在线| 亚洲av熟女国产一区二区性色| 日韩理论电影院| 欧洲女同同性吃奶| 一区二区三区加勒比av| 国产sm调教视频| 洋洋av久久久久久久一区| 久久亚洲AV无码专区成人国产| 国产精品美女久久久久久久久久久| 黑人无套内谢中国美女| 国产视频一区二区在线观看| 欧美日韩一区二区区别是什么| 精品裸体舞一区二区三区| 99精品一区二区| 精品福利视频一区二区三区| 永久免费看片在线观看| 久久精品欧美日韩| 国产精品手机在线观看| 亚洲天堂av一区| 国产精品久久久免费观看| 国产视频一区二区在线| 18禁裸乳无遮挡啪啪无码免费| 亚洲色图视频网站| 国产精品久久免费观看| 日本中文字幕一区| 在线观看免费一区| 国产综合成人久久大片91| 欧美一区日韩一区| fc2成人免费人成在线观看播放 | 一区二区高清在线| 性高潮久久久久久久| 午夜欧美电影在线观看| 色婷婷综合激情| 国产福利一区在线| 精品国产第一区二区三区观看体验| 深夜视频在线观看| 亚洲人妖av一区二区| 极品尤物一区二区| 日韩av一二三| 欧美色区777第一页| 国产成人夜色高潮福利影视| 亚洲精品一区二区精华| 麻豆国产精品一区| 亚洲国产欧美另类丝袜| 在线观看一区二区精品视频| 国产+成+人+亚洲欧洲自线| 欧美精品一区二区在线观看| 亚洲熟女乱综合一区二区三区| 亚洲自拍欧美精品| 欧美亚洲日本国产| 91首页免费视频| 成人欧美一区二区三区黑人麻豆| 国精品人伦一区二区三区蜜桃| 久久99精品一区二区三区三区| 91精品国产欧美一区二区| 9.1在线观看免费| 成人免费一区二区三区在线观看| 黄色片在线观看网站| 国产v综合v亚洲欧| 欧美经典一区二区三区| 2017亚洲天堂| 国产麻豆91精品| 国产日产欧美精品一区二区三区| 99国产精品免费| 高清视频一区二区| 亚洲视频一区二区在线观看| 色综合网站在线| 99麻豆久久久国产精品免费| 亚洲人成精品久久久久久| 色系网站成人免费| 91在线视频播放地址| 一区二区三区中文字幕精品精品| 欧美在线视频日韩| 99久免费精品视频在线观看| 亚洲一级二级三级| 欧美一区二区三区在线| 中文字幕xxx| 狠狠色2019综合网| 国产欧美一区二区精品秋霞影院| 国产日韩精品中文字无码| 国产91高潮流白浆在线麻豆| 亚洲猫色日本管| 欧美日韩黄视频| 黄色录像a级片| 狠狠色狠狠色综合系列| 国产精品毛片a∨一区二区三区| 色网站国产精品| 亚洲成年人av| 精品系列免费在线观看| 国产欧美日韩视频一区二区| 午夜精品一区二区三区视频| 中文字幕欧美视频| 午夜精品福利久久久| 精品国产乱码久久久久久蜜臀| 丝袜美腿中文字幕| 不卡一二三区首页| 亚洲免费观看视频| 欧美一二三在线| 日韩av毛片在线观看| av不卡一区二区三区| 亚洲18女电影在线观看| 26uuu欧美| 在线观看一区二区视频| 国产传媒第一页| 国产成人精品免费网站| 一区二区三区色| 精品成人一区二区三区四区| 在线观看亚洲网站| 日本wwwxx| 国产精品一区二区男女羞羞无遮挡| 自拍偷在线精品自拍偷无码专区| 欧美日韩综合不卡| 人妻精品久久久久中文| 成人永久aaa| 日韩在线卡一卡二| 国产日韩高清在线| 欧美一级爆毛片|