亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

探究Nginx中reload流程的原理真相

 更新時間:2019年12月16日 11:30:59   作者:武培軒  
這篇文章主要介紹了探究Nginx中reload流程的原理真相,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

今天這篇文章主要來介紹下 Nginx 的 reload 流程。實際上在之前文章中,在更改了 nginx 配置文件時,我們都會執(zhí)行 nginx -s reload 命令,我們執(zhí)行這條命令的原因是希望 nginx 不停止服務始終在處理新的請求的同時把 nginx 的配置文件平滑的把舊的 nginx.conf 配置更新為新的 nginx.conf 配置。

這樣一個功能對于 nginx 非常有必要,但是有時候我們會發(fā)現(xiàn)在執(zhí)行 nginx -s reload 命令后,worker 子進程的數(shù)量會變多了,這是因為老的配置運行的 worker 進程長時間沒有退出,當使用 stream 做四層反向代理的時候,可能這種場景會更多。

那么下面我們通過分析 nginx 的 reload 流程,來探究下 nginx 到底做了些什么?所謂優(yōu)雅的退出和立即退出有什么區(qū)別?

reload 流程

第一步在修改好 nginx 的配置文件 nginx.conf 后,向 master 進程發(fā)送 HUP 信號,這實際上和我們在命令行執(zhí)行 nginx -s reload 命令效果是一樣的。

那么 master 進程在收到 HUP 信號以后,會在第二步檢查我們的配置文件語法是否正確,也就是說我們并不一定非要在 nginx -s reload 前執(zhí)行 nginx -t 檢驗下語法是否正確,因為在第二步 nginx 的 master 進程一定會執(zhí)行這個步驟。

在 nginx 的配置語法全部正確以后,master 進程會打開新的監(jiān)聽端口,為什么要在 master 進程中打開新的監(jiān)聽端口?因為我們可能在 nginx.conf 中會引入新的例如 443 或者之前我們沒有打開的的監(jiān)聽端口,而所有 worker 進程是 master 進程 的子進程,子進程會繼承父進程所有已經(jīng)打開的端口,這是 linux 操作系統(tǒng)定義的,所以第三步,我們 master 進程打開了可能引入的新的監(jiān)聽端口。

接下來 mster 進程會用新的 nginx.conf 配置文件來啟動新的 worker 子進程,那么老的 worker 子進程會怎么樣呢?

我們會在第五步在啟動新的 worker 子進程以后,由 master 進程再向老 worker 子進程發(fā)送 QUIT 信號,QUIT 信號和 TERM,INT 信號是不一樣的,QUIT 信號是請優(yōu)雅地關閉子進程,這時候需要關注順序,因為 nginx 需要保證平滑,所以要先啟動新的 worker 子進程,再向老的 worker 子進程發(fā)送 QUIT 信號。

那么老的 master 子進程收到 QUIT 信號后,首先關閉監(jiān)聽句柄,也就是說這個時候新的連接只會到新的 worker 子進程,所以雖然他們之間有時間差,但是時間是非常快速的,那么關閉監(jiān)聽句柄后,處理完當前連接后就結束進程。

下面看 reload 不停機載入新配置的圖示。

reload 不停機載入新配置

master 進程上原先有四個綠色的 worker 子進程,它們使用了老的配置,當我們更改了 nginx.conf 配置文件后,向 master 發(fā)送 SIGHUP 信號或者執(zhí)行 reload 命令, 然后 master 會用新的配置文件啟動四個新的黃色 worker 子進程,此時是四個老的綠色 worker 子進程和四個新的黃色的 worker 子進程是并存的。那么老的 worker 子進程在正常的情況下會在處理已經(jīng)建立好的連接上的請求之后關閉這個連接,哪怕這個連接是 keeplive 請求也會正常關閉。

但是異常情況,如果有一些請求出現(xiàn)問題,客戶端長時間無法處理,那么就會導致這個請求長時間停留在這個 worker 子進程當中,那么這個 worker 子進程會長時間存在,因為新的連接已經(jīng)跑在黃色的 worker 子進程中,所以影響并不會很大,唯一會影響的就是綠色的 worker 子進程會長時間存在,但也只影響已存在的連接,不會影響新的連接。

我們有什么辦法處理呢?在新版本中提供了一個新的配置 worker_shutdown_timeout,也就是說最長等待多長時間,這樣 master 進程啟動新的黃色 worker 進程之后,如果老的 worker 進程一直沒有退出,時間到了之后會強制把老的 worker 進程退出掉。

總結

本文主要講解了 Nginx 平滑升級新的配置文件的流程,在我們了解了優(yōu)雅關閉 worker 子進程和啟動新配置的 worker 子進程流程間的關系后,我們可以更好地處理罕見的異常場景。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • Nginx中定義404頁面并且返回404狀態(tài)碼的正確方法

    Nginx中定義404頁面并且返回404狀態(tài)碼的正確方法

    這篇文章主要介紹了Nginx中定義404頁面并且返回404狀態(tài)碼的正確方法,本文在一次AJAX調用時發(fā)現(xiàn)了這個問題,服務器返回了一個404頁頁但沒有返回404狀態(tài)碼,需要的朋友可以參考下
    2014-08-08
  • 教你如何使用 Nginx 進行負載均衡

    教你如何使用 Nginx 進行負載均衡

    Nginx 是一個高性能的 HTTP 和反向代理服務器,它也經(jīng)常被用作郵件代理服務器和通用 TCP/UDP 代理服務器,本文我們將詳細介紹如何使用 Nginx 進行負載均衡,感興趣的朋友跟隨小編一起看看吧
    2024-05-05
  • LNMP簡介(最新推薦)

    LNMP簡介(最新推薦)

    LNMP是指一組通常一起使用來運行動態(tài)網(wǎng)站或者服務器的自由軟件名稱首字母縮寫,L指Linux,N指Nginx,M一般指MySQL,也可以指MariaDB,P一般指PHP,也可以指Perl或Python
    2023-08-08
  • 如何在centos上使用yum安裝rabbitmq-server

    如何在centos上使用yum安裝rabbitmq-server

    這篇文章主要介紹了如何在centos上使用yum安裝rabbitmq-server,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-09-09
  • 為Nginx動態(tài)添加模塊的方法

    為Nginx動態(tài)添加模塊的方法

    這篇文章主要介紹了為Nginx動態(tài)添加模塊的方法,文中講解非常細致,代碼幫助大家更好的理解和學習,感興趣的朋友可以了解下
    2020-07-07
  • nginx設置目錄白名單、ip白名單的實現(xiàn)方法

    nginx設置目錄白名單、ip白名單的實現(xiàn)方法

    今天小編就為大家分享一篇nginx設置目錄白名單、ip白名單的實現(xiàn)方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • 解讀nginx反向代理location和proxy_pass的映射關系

    解讀nginx反向代理location和proxy_pass的映射關系

    這篇文章主要介紹了解讀nginx反向代理location和proxy_pass的映射關系,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • Nginx開啟stub_status模塊配置方法

    Nginx開啟stub_status模塊配置方法

    這篇文章主要介紹了Nginx開啟stub_status模塊配置方法,Nginx中的stub_status模塊主要用于查看Nginx的一些狀態(tài)信息,本文講解它的開啟配置方法,需要的朋友可以參考下
    2015-02-02
  • PHP開發(fā)框架kohana3.3.1在nginx下的偽靜態(tài)設置例子

    PHP開發(fā)框架kohana3.3.1在nginx下的偽靜態(tài)設置例子

    這篇文章主要介紹了PHP開發(fā)框架kohana3.3.1在nginx下的偽靜態(tài)設置例子,kohana曾經(jīng)是codeigniter框架的衍生版,后來發(fā)展成另一個獨立的PHP5開發(fā)框架,需要的朋友可以參考下
    2014-07-07
  • Nginx 搭建域名訪問環(huán)境的詳細過程

    Nginx 搭建域名訪問環(huán)境的詳細過程

    這篇文章主要介紹了Nginx 搭建域名訪問環(huán)境的詳細過程,通過示例代碼講解了Nginx 搭建轉發(fā)網(wǎng)關進行負載均衡的相關操作,感興趣的朋友跟隨小編一起看看吧
    2024-06-06

最新評論