婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Nginx進程管理和重載原理詳解

Nginx進程管理和重載原理詳解

熱門標簽:怎么找到沒有地圖標注的店 麗江真人語音電話外呼系統 上海申請高400開頭的電話 打400電話怎么辦理收費 宿城區電話機器人找哪家 河南防封號電銷機器人是什么 福州企業電銷機器人排名 400電話辦理介紹信 10086外包用的什么外呼系統

進程結構圖

Nginx是多進程結構,多進程結構設計是為了保證Nginx的高可用高可靠,包含:

  • master進程:父進程,負責worker進程的管理
  • worker進程:子進程,worker進程一般配置與服務器CPU核數相同,worker進程用來處理具體請求。
  • cache進程:也是子進程,包括cache manager和cache loader進程,主要是反向代理做緩存使用。

注:多進程相對于多線程之所以能夠保證高可用與高可靠是因為進程間地址空間是獨立的,進程間的任務不會相互影響,相對多線程更加耗費CPU資源。而多線程共享一個進程的地址空間,其中一個線程任務失敗會影響到其它線程任務。

圖3-1 Nginx進程結構圖

假設我們的Nginx服務的用戶是nginx,我們可以使用如下命令查看當前運行的Nginx服務的master進程和worker進程,而且可以看到4個worker進程的父進程ID都是master的進程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 一個master進程與四個worker子進程

我們可以通過 lsof -i:nginx端口號 來查看我們的master和worker進程。

[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)

信號量管理

Linux的信號量管理機制

信號是進程間通信方式之一,典型用法是:終端用戶輸入中斷命令,通過信號機制停止一個程序的運行。

我們可以通過給進程發送信號來管理我們的進程,kill -l命令可以查看linux支持的信號量

linux信號量

一共有64號信號量,主要需要弄清如下幾個:

kill -1 $PID:(SIGHUP)重新加載進程,對于與終端脫離關系的守護進程,這個信號用于通知它重新讀取配置文件;

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

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

kill -9 $PID:(SIGKILL)立即殺死進程,無論當前程序處于什么狀態;

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

kill -12 $PID:($IGUSR2)

kill -15 $PID:(SIGTERM)正常停止一個進程;

kill -17 $PID:(SIGCHLD)父子進程通信的信號量,父進程可以fork()出很多子進程,子進程掛掉會給父進程發送信號;

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

kill -l # 查看所有能夠支持的信號
kill PID
# 殺死一個進程
kill 1024
# 殺死多個進程 進程號之間用空格隔開
kill 1024 2048
# kill -9 表示立即強制結束進程
kill -9 1024

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

利用信號量管理Nginx進程

管理Nginx進程可以這些方式:master進程、worker進程、命令行

使用信號量管理master和worker(不推薦使用發送信號量的方式來管理worker進程,worker進程應該交給master進程來管理和維護)。

Master進程

監控worker進程

  • CHLD

管理worker進程

接收信號

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

示例:

通過kill命令殺死master進程

kill -s SIGTERM 1325

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

kill -s SIGHUP 1325

Worker進程

接收信號

  • TERM、INT
  • QUIT
  • USR1
  • WINCH

雖然可以,但是不推薦使用信號量方式直接管理worker進程,worker進程應該交給master進程來管理和維護

示例:

使用kill命令殺死一個worker進程,這樣會殺死一個worker進程,linux會殺掉的worker進程的父進程(master進程)發送SIGCHLD信號量,所以master進程監測到我們某一個子進程可能出了問題,會啟動一個新的worker進程,維護worker進程的數量。

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

參數說明:

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

配置文件重載原理

我們知道了可以通過給nginx的master進程發送SIGHUP信號,或者使用nginx -s reload命令來達到重新載入配置文件,從而使nginx平滑升級。那我們執行這樣一個命令之后,對nginx本身來說背后發生了什么事情呢,它是如何保證新老請求如何平滑過渡的?

reload重載配置文件的流程

  • 向master進程發送HUP信號(reload命令)
  • master進程檢查配置語法是否正確
  • master進程打開監聽端口(在修改配置文件的端口情況下,可能)
  • master進程使用新的配置文件啟動新的worker子進程
  • master進程向老的worker子進程發送QUIT信號
  • 舊的worker進程關閉監聽句柄,處理完當前連接后關閉進程

如果用圖示來描述的話大概如下圖所示

nginx -s reload

圖示解析:

1.左邊綠色的狀態是執行nginx -s reload命令之前的狀態,按照我個人主機的配置時一個master進程和4個worker子進程。

2.為了模擬執行nginx -s reload命令后原來的worker進程會處理完請求后再被殺掉,我模擬一個需要很久才能處理完任務并響應的接口,是的,我在代碼里sleep 15秒,也就是說這個接口響應需要15秒,時間弄長點方便我們來觀察中間態,注意,在執行reload命令前請求該接口

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

3.我們已經知道了master進程會把任務交給worker子進程處理,目前只有一個任務,所以當前只需要一個worker進程需要處理任務。

4.執行reload命令,master進程會創建4個(與你配置有關)新的worker進程(我上圖中的黃色worker進程),關閉掉舊的空閑worker進程(綠色worker進程),而正在處理請求的舊worker進程不會立即關閉,而是會等請求處理完畢就關閉。

5.剩下的最后一個舊worker進程任務處理完畢也被關掉,最后剩下的都是使用新nginx.conf配置產生的新worker進程,可以看下面的這張圖,那個處于is shutting down的舊worker進程就是因為處理上面sleep 15秒的任務接口還沒處理完畢,所以依然能夠被看到。

總結

到此這篇關于Nginx進程管理和重載原理的文章就介紹到這了,更多相關Nginx進程管理和重載原理內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

標簽:雞西 荊門 隴南 運城 朝陽 遵義 面試通知 連云港

巨人網絡通訊聲明:本文標題《Nginx進程管理和重載原理詳解》,本文關鍵詞  Nginx,進程,管理,和,重載,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Nginx進程管理和重載原理詳解》相關的同類信息!
  • 本頁收集關于Nginx進程管理和重載原理詳解的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    欧美一区二区三区视频免费| 99久久久精品免费观看国产蜜| 天天色图综合网| 97se亚洲国产综合在线| 亚洲欧美日韩国产一区二区三区| 91在线精品一区二区| 亚洲精品免费在线播放| 91国偷自产一区二区开放时间 | 日韩激情视频网站| 欧美精品777| 国产在线视视频有精品| 国产精品色在线| 欧美伊人久久久久久久久影院 | 在线视频亚洲一区| 亚洲国产精品欧美一二99| 日韩亚洲欧美高清| 国产九色sp调教91| 欧美日本乱大交xxxxx| 亚洲综合色在线| 亚洲精品一区二区三区精华液| 国产精品卡一卡二| 久久精品国内一区二区三区| 国产成人免费视频精品含羞草妖精 | 国产91清纯白嫩初高中在线观看 | 精品日韩在线观看| 成人性生交大片免费看中文| 亚洲最新视频在线观看| 日韩欧美成人激情| 一本大道综合伊人精品热热| 日韩电影在线观看一区| 日本一区二区免费在线| 欧美影视一区在线| 成人高清视频免费观看| 亚洲精品久久久蜜桃| 日韩美女一区二区三区四区| av男人天堂一区| 蜜桃av噜噜一区| 亚洲欧美日韩精品久久久久| 久久综合九色欧美综合狠狠| 91高清视频免费看| 国产精品亚洲人在线观看| 亚洲国产欧美在线| 国产精品久久久久9999吃药| 777奇米成人网| 91视频一区二区| 国产精品一二三在| 亚洲香肠在线观看| 中文字幕视频一区| 久久欧美中文字幕| 日韩精品一区二区在线观看| 91黄色小视频| 91蜜桃免费观看视频| 成人av影院在线| 粉嫩av亚洲一区二区图片| 麻豆一区二区三区| 蜜臀久久99精品久久久画质超高清 | 国产精品美女久久久久久久| 这里只有精品免费| 91免费观看在线| av中文字幕亚洲| 粉嫩欧美一区二区三区高清影视| 日韩av在线发布| 亚洲国产精品久久艾草纯爱| 亚洲欧美在线视频观看| 国产精品无码永久免费888| 精品福利视频一区二区三区| 欧美一级片在线观看| 69堂成人精品免费视频| 欧美色爱综合网| 色94色欧美sute亚洲线路一ni| 99久久99久久精品免费看蜜桃 | 国产美女精品一区二区三区| 激情图区综合网| 国产精品一区专区| 国产风韵犹存在线视精品| 久久综合综合久久综合| 黄色成人免费在线| 国产99久久久国产精品潘金网站| 国产麻豆欧美日韩一区| 国产精品18久久久久久久网站| 欧美高清视频不卡网| 精品欧美乱码久久久久久1区2区| 国产校园另类小说区| 国产欧美日韩综合精品一区二区| 欧美国产日本视频| 亚洲精品一卡二卡| 首页综合国产亚洲丝袜| 久久99热这里只有精品| 岛国精品在线观看| 欧美视频你懂的| 精品国产乱码久久久久久图片 | 久久综合中文字幕| 国产精品久久一卡二卡| 亚洲欧美一区二区三区孕妇| 亚洲午夜电影在线观看| 美女脱光内衣内裤视频久久网站 | 欧美日韩久久不卡| 欧美图区在线视频| 欧美偷拍一区二区| 欧美国产激情一区二区三区蜜月 | 中文字幕字幕中文在线中不卡视频| 亚洲精品日韩专区silk| 久久精品国产久精国产爱| 91丨porny丨国产| 久久女同性恋中文字幕| 亚洲网友自拍偷拍| 国产精品一卡二卡| 欧美一二三在线| 亚洲精品成人少妇| 国产日产欧产精品推荐色| 天堂成人国产精品一区| 99热精品一区二区| 久久久午夜精品| 一级做a爱片久久| 美女视频黄频大全不卡视频在线播放| proumb性欧美在线观看| 欧美三级资源在线| 国产精品美女久久久久av爽李琼| 天天综合色天天综合色h| 成人综合婷婷国产精品久久免费| 在线电影欧美成精品| 亚洲天堂免费看| 久久www免费人成看片高清| 99精品1区2区| 久久亚洲一区二区三区明星换脸| 亚洲色图19p| 精品亚洲成a人| 欧美精品 日韩| 亚洲三级在线免费| 成人做爰69片免费看网站| 欧美精品丝袜久久久中文字幕| 国产精品久久久久久久浪潮网站 | 欧美日韩一区二区三区不卡| 日韩伦理av电影| 成人ar影院免费观看视频| 国产日韩欧美高清在线| 国产精品亚洲综合一区在线观看| 久久综合色婷婷| 久久国产精品99久久久久久老狼| 在线成人av影院| 日韩电影在线一区二区| 制服丝袜亚洲网站| 蜜臀va亚洲va欧美va天堂| 日韩视频免费观看高清完整版在线观看| 尤物视频一区二区| 欧美日韩三级一区| 免费久久精品视频| 精品第一国产综合精品aⅴ| 国产成人免费9x9x人网站视频| 久久久国产精品麻豆| 99精品欧美一区二区三区综合在线| 1024成人网| 7777女厕盗摄久久久| 亚洲地区一二三色| 欧美tickling网站挠脚心| 国产大陆a不卡| 亚洲靠逼com| 欧美一级高清片| 久久狠狠亚洲综合| 国产片一区二区| 成人动漫视频在线| 亚洲成a人片在线观看中文| 欧美日韩一区中文字幕| 日韩成人一级大片| 欧美一卡二卡三卡四卡| 丁香婷婷综合激情五月色| 1024成人网| 精品免费国产一区二区三区四区| 国产成人av电影在线| 国产午夜精品理论片a级大结局| 色噜噜狠狠成人网p站| 蜜桃视频免费观看一区| 自拍偷拍亚洲激情| 欧美一区二视频| 国产精品18久久久久久vr| 亚洲免费观看高清| www日韩大片| 欧美电影一区二区| 色哟哟国产精品| 国产精品一区二区久激情瑜伽 | 亚洲午夜在线电影| 欧美精品一区男女天堂| 91久久精品一区二区二区| 狠狠网亚洲精品| 亚洲黄色在线视频| 日韩欧美一二三四区| 日本久久一区二区三区| 久久99精品久久久久久国产越南| 一区二区三区国产精品| 国产色一区二区| 欧美另类一区二区三区| 成人免费高清在线观看| 国产专区综合网| 日韩av不卡在线观看| 亚洲一区二区三区美女| 国产精品久久久久久久久免费桃花| 91.xcao| 色国产精品一区在线观看| 成人看片黄a免费看在线| 国产乱色国产精品免费视频|