国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Nginx信號處理與平滑升級

pumpkin9 / 2323人閱讀

摘要:接收到信號的舊的進程會關閉監聽,但是還會處理當前的請求,處理完請求之后,舊的進程退出。首先,用新的二進制文件替換掉舊的,然后發送信號給進程。如果一個升級已經成功,然后你想只保留新的,那么發送信號給舊的進程讓新的來提供服務原文翻譯

Nginx進程分為master進程和worker進程,我們可以通過信號來控制master進程。默認情況下,Nginx會把它的master進程id寫到/usr/local/nginx/logs/nginx.pid中。你可以在編譯的時候通過./configure來指定,或者在配置文件中用pid來配置。

Master進程能夠接收并處理如下的信號:

ERM, INT(快速退出,當前的請求不執行完成就退出)

QUIT (優雅退出,執行完當前的請求后退出)

HUP (重新加載配置文件,用新的配置文件啟動新worker進程,并優雅的關閉舊的worker進程)

USR1 (重新打開日志文件)

USR2 (平滑的升級nginx二進制文件)

WINCH (優雅的關閉worker進程)

Worker進程也可以接收并處理一些信號:

TERM, INT (快速退出)

QUIT (優雅退出)

USR1 (重新打開日志文件)

用HUP信號使Nginx加載新的配置文件

當Nginx接收到HUP信號的時候,它會嘗試著去解析并應用這個配置文件,如果沒有問題,那么它會創建新的worker進程,并發送信號給舊的 worker進程,讓其優雅的退出。接收到信號的舊的worker進程會關閉監聽socket,但是還會處理當前的請求,處理完請求之后,舊的 worker進程退出。如果Nginx不能夠應用新的配置文件,那么仍將用舊的配置文件來提供服務。

在線升級Nginx二進制文件

當你想升級Nginx到一個新的版本,增加或減少module的時候,你需要替換Nginx的二進制文件,你可以平滑的實現它,沒有請求會丟失。

首先,用新的二進制文件替換掉舊的,然后發送USR2信號給master進程。master進程會把自己的.pid文件重命名為.oldbin(例 如,/usr/local/nginx/logs/nginx.pid.oldbin),然后執行新的二進制文件,從而啟動一個新的master進程和新的worker進程:

     PID  PPID USER    %CPU   VSZ WCHAN  COMMAND
    33126     1 root     0.0  1164 pause  nginx: master process /usr/local/nginx/sbin/nginx
    33134 33126 nobody   0.0  1368 kqread nginx: worker process (nginx)
    33135 33126 nobody   0.0  1380 kqread nginx: worker process (nginx)
    33136 33126 nobody   0.0  1368 kqread nginx: worker process (nginx)
    36264 33126 root     0.0  1148 pause  nginx: master process /usr/local/nginx/sbin/nginx
    36265 36264 nobody   0.0  1364 kqread nginx: worker process (nginx)
    36266 36264 nobody   0.0  1364 kqread nginx: worker process (nginx)
    36267 36264 nobody   0.0  1364 kqread nginx: worker process (nginx)

在這個時候,有兩個Nginx實例在運行,一起處理進來的請求。為了讓舊的實例退出,你需要發送WINCH信號給舊的master進程,這樣舊master進程的worker進程就會優雅的退出:

        PID  PPID USER    %CPU   VSZ WCHAN  COMMAND
    33126     1 root     0.0  1164 pause  nginx: master process /usr/local/nginx/sbin/nginx
    33135 33126 nobody   0.0  1380 kqread nginx: worker process is shutting down (nginx)
    36264 33126 root     0.0  1148 pause  nginx: master process /usr/local/nginx/sbin/nginx
    36265 36264 nobody   0.0  1364 kqread nginx: worker process (nginx)
    36266 36264 nobody   0.0  1364 kqread nginx: worker process (nginx)
    36267 36264 nobody   0.0  1364 kqread nginx: worker process (nginx)

一段時間后,舊的worker進程都已經退出了,只有新的worker進程處理進來的請求:

    PID  PPID USER    %CPU   VSZ WCHAN  COMMAND
    33126     1 root     0.0  1164 pause  nginx: master process /usr/local/nginx/sbin/nginx
    36264 33126 root     0.0  1148 pause  nginx: master process /usr/local/nginx/sbin/nginx
    36265 36264 nobody   0.0  1364 kqread nginx: worker process (nginx)
    36266 36264 nobody   0.0  1364 kqread nginx: worker process (nginx)
    36267 36264 nobody   0.0  1364 kqread nginx: worker process (nginx)

這個時候你仍然可以通過以下幾個步驟回滾到舊的服務,因為舊master進程并沒有關閉其監聽的socket: 發送HUP信號給舊的master進程,它會啟動worker進程并且不需要重新加載配置文件 發送QUIT信號給新的master進程,讓它優雅的終止其worker進程發送TERM信號給新的master進程,強制其退出 如果一些原因,新的worker進程沒有退出,發送KILL信號給它們 當新的master進程退出之后,舊的master進程會刪除其pid文件名中的后綴.oldbin,這樣一切就又變成升級之前的樣子。 如果一個升級已經成功,然后你想只保留新的server,那么發送QUIT信號給舊的master進程讓新的server來提供服務:

    PID  PPID USER    %CPU   VSZ WCHAN  COMMAND
    36264     1 root     0.0  1148 pause  nginx: master process /usr/local/nginx/sbin/nginx
    36265 36264 nobody   0.0  1364 kqread nginx: worker process (nginx)
    36266 36264 nobody   0.0  1364 kqread nginx: worker process (nginx)
    36267 36264 nobody   0.0  1364 kqread nginx: worker process (nginx)

原文 Starting, Stopping, and Restarting Nginx
翻譯 JeremyWei

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/39045.html

相關文章

  • Linux下Nginx的安裝、升級及動態添加模塊

    摘要:新版本主進程退出的同時,舊版本主進程將會自動啟動它的工作進程。下面我們來看一下如何給運行中的添加模塊。 原文鏈接:http://xueliang.org/article/detail/20160615172540639 系統基于ubuntu server 14.04.4 amd64 安裝 第一步 下載并解壓Nginx壓縮包 從Nginx官網下載Nginx,或者在Linux上執行wget...

    W4n9Hu1 評論0 收藏0
  • nginx配置參數詳解及django框架下的nginx和uwsgi的搭建

    摘要:于年發布,聚焦于高性能,高并發和低內存消耗問題。二服務的啟??刂圃谥v解配置文件參數前,讓我們先來了解一下的啟停操作吧。在講解配置項之前,讓我們先了解一下各個塊的作用。配置最大連接數設置允許每個同時開啟的最大連接數,默認值。 一、nginx簡介、 ??nginx(發音engine x)是俄羅斯軟件工程師Igor Sysoev開發的免費開源web服務器軟件。nginx于2004年發布,聚焦...

    snowLu 評論0 收藏0
  • nginx平滑升級添加ssl實現站內https

    摘要:注意如果想完全實現全站,你的全站鏈接都得是的,否則綠鎖會不顯示?;蛘卟扇〉绕渌胧崿F。 操作目錄在root的home下,/home /mt/server/nginx/sbin/nginx 這是x云默認nginx 路徑 下載nginx1.8 stable wget http://nginx.org/download/nginx-1.8.0.tar.gz tar zxvf nginx-1...

    soasme 評論0 收藏0
  • nginx文檔翻譯系列] 控制nginx

    摘要:主進程首先檢查語法的有效性,然后試圖應用新的配置,即打開日志文件和新的監聽套接字。舊的工作進程關閉監聽的套接字并繼續服務舊的客戶端。 [nginx文檔翻譯系列] 控制nginx 原文鏈接:http://nginx.org/en/docs/cont...轉自我的GitHub有些地方覺得翻譯的不是很合理,所以在括號中寫出了原句。如果有地方翻譯的不合理,請多多指教。 修改配置文件(Chan...

    luckyw 評論0 收藏0

發表評論

0條評論

pumpkin9

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<