亚洲国产精品人久久,亚洲va国产日韩欧美精品色婷婷,久久久久88色偷偷,免费人成黄页在线观看国际

17站長網

17站長網 首頁 網站 服務器 查看內容

nginx平滑重啟的實現方法

2022-10-6 13:49| 查看: 1658 |來源: 互聯網

在服務器開發過程中,難免需要重啟服務加載新的代碼或配置,如果能夠保證server重啟的過程中服務不間斷,那重啟對于業務的影響可以降為0。最近調研了一下nginx平 ...

一、背景

在服務器開發過程中,難免需要重啟服務加載新的代碼或配置,如果能夠保證server重啟的過程中服務不間斷,那重啟對于業務的影響可以降為0。最近調研了一下nginx平滑重啟,覺得很有意思,記錄下來供有興趣的同學查閱。

二、重啟流程

  •  重啟意味著新舊接替,在交接任務的過程中勢必會存在新舊server并存的情形,因此,重啟的流程大致為:

    • 啟動新的server

    • 新舊server并存,兩者共同處理請求,提供服務

    • 舊的server處理完所有的請求之后優雅退出

  • 這里,最主要的問題在于如何保證新舊server可以并存,如果重啟前后的server端口一致,如何保證兩者可以監聽同一端口。

 三、nginx實現

為了驗證nginx平滑重啟,筆者首先嘗試nginx啟動的情形下再次開啟一個新的server實例,結果如圖:

很明顯,重新開啟server實例是行不通的,原因在于新舊server使用了同一個端口80,在未開始socket reuseport選項復用端口時,bind系統調用會出錯。nginx默認bind重試5次,失敗后直接退出。而nginx需要監聽IPV4地址0.0.0.0和IPV6地址[::],故圖中打印出10條emerg日志。

接下來就開始嘗試平滑重啟命令了,一共兩條命令:

kill -USR2 `cat /var/run/nginx.pid`
kill -QUIT `cat /var/run/nginx.pid.oldbin`

第一條命令是發送信號USR2給舊的master進程,進程的pid存放在/var/run/nginx.pid文件中,其中nginx.pid文件路徑由nginx.conf配置。

第二條命令是發送信號QUIT給舊的master進程,進程的pid存放在/var/run/nginx.pid.oldbin文件中,隨后舊的master進程退出。

那么問題來了,為什么舊的master進程的pid存在于兩個pid文件之中?事實上,在發送信號USR2給舊的master進程之后,舊的master進程將pid重命名,原先的nginx.pid文件rename成nginx.pid.oldbin。這樣新的master進行就可以使用nginx.pid這個文件名了。

先執行第一條命令,結果如圖:

不錯,新舊master和worker進程并存了。 再來第二條命令,結果如圖:

如你所見,舊的master進程8527和其worker進程全部退出,只剩下新的master進程12740。

不由得產生困惑,為什么手動開啟一個新的實例行不通,使用信號重啟就可以達到。先看下nginx log文件:

除了之前的錯誤日志,還多了一條notice,意思就是繼承了sockets,fd值為6,7。 隨著日志翻看nginx源碼,定位到nginx.c/ngx_exec_new_binary函數之中,

ngx_pid_t
ngx_exec_new_binary(ngx_cycle_t *cycle, char *const *argv)
{
  ...
  ctx.path = argv[0];
  ctx.name = "new binary process";
  ctx.argv = argv;
  n = 2;
  env = ngx_set_environment(cycle, &n);
...
  var = ngx_alloc(sizeof(NGINX_VAR)
          + cycle->listening.nelts * (NGX_INT32_LEN + 1) + 2,
          cycle->log);
...
  p = ngx_cpymem(var, NGINX_VAR "=", sizeof(NGINX_VAR));
  ls = cycle->listening.elts;
  for (i = 0; i < cycle->listening.nelts; i++) {
    p = ngx_sprintf(p, "%ud;", ls[i].fd);
  }
  *p = '\0';
  env[n++] = var;
...
  env[n] = NULL;
...
  ctx.envp = (char *const *) env;
  ccf = (ngx_core_conf_t *) ngx_get_conf(cycle->conf_ctx, ngx_core_module);
  if (ngx_rename_file(ccf->pid.data, ccf->oldpid.data) == NGX_FILE_ERROR) {
    ...
    return NGX_INVALID_PID;
  }
  pid = ngx_execute(cycle, &ctx);
  if (pid == NGX_INVALID_PID) {
    if (ngx_rename_file(ccf->oldpid.data, ccf->pid.data)
      == NGX_FILE_ERROR)
    {
      ...
    }
  }
...
  return pid;
}

函數的流程為

  1.  將舊的master進程監聽的所有fd,拷貝至新master進程的env環境變量NGINX_VAR。

  2. rename重命名pid文件

  3. ngx_execute函數fork子進程,execve執行命令行啟動新的server。

  4. 在server啟動流程之中,涉及到環境變量NGINX_VAR的解析,ngx_connection.c/ngx_add_inherited_sockets具體代碼為:

static ngx_int_t
ngx_add_inherited_sockets(ngx_cycle_t *cycle)
{
...
  inherited = (u_char *) getenv(NGINX_VAR);
  if (inherited == NULL) {
    return NGX_OK;
  }
  if (ngx_array_init(&cycle->listening, cycle->pool, 10,
            sizeof(ngx_listening_t))
    != NGX_OK)
  {
    return NGX_ERROR;
  }
  for (p = inherited, v = p; *p; p++) {
    if (*p == ':' || *p == ';') {
      s = ngx_atoi(v, p - v);
      ...
      v = p + 1;
      ls = ngx_array_push(&cycle->listening);
      if (ls == NULL) {
        return NGX_ERROR;
      }
      ngx_memzero(ls, sizeof(ngx_listening_t));
      ls->fd = (ngx_socket_t) s;
    }
  }
  ...
  ngx_inherited = 1;
  return ngx_set_inherited_sockets(cycle);
}

函數流程為:

解析環境變量NGINX_VAR的值,獲取fd存入數組

fd對應的socket設為ngx_inherited,保存這些socket的信息。

也就是說,新的server壓根就沒重新bind端口listen,這些fd狀態和值都是新的master進程fork時帶過來的,新的master進程監聽處理繼承來的文件描述符即可,這里比較關鍵的一點在于listen socket文件描述符通過ENV傳遞。

本文最后更新于 2022-10-6 13:49,某些文章具有時效性,若有錯誤或已失效,請在網站留言或聯系站長:17tui@17tui.com
·END·
站長網微信號:w17tui,關注站長、創業、關注互聯網人 - 互聯網創業者營銷服務中心

免責聲明:本站部分文章和圖片均來自用戶投稿和網絡收集,旨在傳播知識,文章和圖片版權歸原作者及原出處所有,僅供學習與參考,請勿用于商業用途,如果損害了您的權利,請聯系我們及時修正或刪除。謝謝!

17站長網微信二維碼

始終以前瞻性的眼光聚焦站長、創業、互聯網等領域,為您提供最新最全的互聯網資訊,幫助站長轉型升級,為互聯網創業者提供更加優質的創業信息和品牌營銷服務,與站長一起進步!讓互聯網創業者不再孤獨!

掃一掃,關注站長網微信

大家都在看

  • 當我們在共享網絡訪問的時候,可能會遇到提示指定的網絡名不再可用的問題,這可能是由于我們的共享網絡出現了錯誤,也可能是被共享的對象所拒絕了。指定的網絡名 ......

    故障排除 2023-03-10
  • 1、首先進入到“百度”軟件中, 2、然后在其中輸入“百度識圖”, 3、之后點擊圖中的“開始使用”按鈕, 4、緊接著點擊右下角的“相冊”功能, 5、在相冊下 ......

    軟件教程 2023-02-17
  • 一、軟件沖突1、首先確認是否是應用程序沖突導致的。2、查看是否只有特定幾個游戲或應用會導致該問題。3、如果是應用沖突,那么只要卸載這些app就可以解決了。二 ......

    軟件教程 2022-12-27
  •   文/曹楊  原標題:誰還看電視?  爸爸戴一副老花鏡,媽媽戴一副近視鏡,一人坐在沙發,一人躺在床上,各自刷著自己關注的博主更新的短視頻。電視也許開著,但只是背景。  這樣的畫面,幾乎成了洛奇家的常 ...

    站長 2020-12-09
  • 圖片來源于簡書  文/郭開森 楊帆  陸玖財經準備開新欄目了,每周一創始人郭開森和楊帆合體郭德帆,對行業進行一些觀察和評論,第一篇我們仍是打算寫社區團購,這是當下最火的話題。  來過陸玖財經做客的朋友們...

    熱議 2020-12-07
  • 一、N100對比intel i3 1、N100的跑分達到了147210分,這個數據可以達到i3的七代級別。 2、在跑分上也是超越了大部分的I3七代CPU,不過比I3八代要弱勢一些。 3 ......

    硬件知識 2023-04-26
  • 電腦端:1、大家可以點擊右邊鏈接進入網頁版的百度網盤,進入之后點擊“去登錄”。https://pan.baidu.com/2、之后正確的輸入賬號密碼進行登錄就好啦。手機端:1 ......

    軟件教程 2022-12-27
  • 在填寫一些項目申請書中,總是免不了要選擇一些數字,但是在方框中如何插入數字,該怎么辦呢?那么下面就由學習啦小編給大家分享下word在方框里輸入數字的技巧, ......

    Word教程 2023-04-27
  • 8月15日消息 上周,有媒體報道前身為百度圖片的“榴蓮”APP含有大量不雅視頻內容被用戶舉報。對此,百度圖片官方進行了回應,百度圖片表示已經對報道中所涉及的“生吃旋風哥”等爭議內容進行了下線處理。 此外,百度...

    站長 2016-08-15
  • 迅雷前綴是什么 答:迅雷前綴是(magnet:?xt=urn:btih:)括號里的就是了。 我們只要在這段文字之后輸入后續的內容,就可以創建下載鏈接了。 1、磁力鏈接不基于文 ......

    軟件教程 2023-06-03
  • WPS Office手機版怎么加橫線?很多用戶還不知道WPS Office手機版怎么加橫線,WPS Office手機版怎么加橫線,WPS Office手機版怎么打橫線,WPS Office手機版怎么弄 ......

    WPS教程 2023-03-31
  • 一、內容特權。 1、半價點播。 許多站內視頻都需要付費觀看,而大會員用戶可以直接半價享受; 購買成功后的48h內無限次觀看。有部分的內容是只限在中國大陸內觀 ......

    軟件教程 2023-05-05
  • 藍奏云怎么打開別人分享的鏈接1、當我們獲得了鏈接以后,首先需要把鏈接粘貼進瀏覽器里回車進入。2、進入以后就會轉到這樣一個頁面,如果有密碼的話我們就輸入給 ......

    軟件教程 2023-03-16
  • 1、首先打開小米運動的“實驗室功能”。 2、接著點擊“門卡模擬”。 3、然后點擊“我知道了”。 4、最后貼近就可以刷卡成功了。...

    硬件知識 2023-05-17
  • 1、打開手機輕顏相機app,點擊“我的”,點擊“設置”,2、點擊“幫助與反饋”,3、點擊右下角“在線咨詢”即可聯系客服,詢問自己的問題啦!...

    軟件教程 2023-03-16
  • 答:華為P系列: 華為p40,華為p40plus,華為p50,華為p50e,華為p60 華為mate系列: 華為mate40,華為mate50,華為mate50e,華為mate60 華為nova系列: 華為n ......

    鴻蒙系統 2023-04-24
  • 近期有用戶反映,電腦在更新Windows 11 Insider Preview 25252.1000后,出現了應用和已壓縮的文件點擊毫無反應,拖拽都不行,只能從開始菜單打開的情況,這是怎 ......

    windows11 2022-12-13
  • 可見單元格就是不包括隱藏或者篩選篩選后隱藏起來的單元格區域。方法:篩選或隱藏數據,復制需要粘貼的值,在目標單元格區域左上角的第一個單元格處右擊,選擇【 ......

    WPS教程 2022-12-10
  • 答:驍龍8+更好。 驍龍7+gen2實際上就是驍龍8+的低配版本。 在一些其他的核心架構方面都是保持一致的,比如說CPU的架構、GPU的架構等等。 驍龍7+和驍龍8+具體 ......

    硬件知識 2023-04-06
  • 1、先打開機頂盒進入主界面,并且使用遙控器打開設置。 2、然后選擇“賬號與安全”,并且進入。 3、最后往下面翻就可以看到“ADB調試”的選項,直接開啟就行了 ......

    軟件教程 2023-06-01
  • 答:在3DMark壓力測試當中,顯卡需要超高97%才能夠算合格,證明顯卡的穩定性是過關的。 1、一般的默認情況下在2500~3000分就算很正常的了。 2、分數越高說明顯卡 ......

    軟件教程 2023-06-01
  • 文件被win10系統誤報病毒自動刪除了如何進行恢復?有用戶下載了某些破解軟件卻被Win10系統誤認為是病毒文件而自動刪除,當然系統自帶殺毒軟件其實挺不錯的,就是有時候會誤報,大家遇到這種情況的時候就希望把誤刪的...

    windows10 2022-11-20
  • win11系統如何釋放掉系統默認保留的存儲空間?一般情況下,Windows會保留一些存儲空間,以便設備獲得良好性能和成功更新。但是當出現系統盤儲存空間不足時,我們會將幾個G的保留空間釋放出來,以解燃眉之急。本期教...

    windows11 2022-11-17
  •   文/黎明  一場針對中國互聯網巨頭的反壟斷風暴正在醞釀,而且這次動真格了。  11月10日,國家市場監管總局發布《關于平臺經濟領域的反壟斷指南(征求意見稿)》,要加大對互聯網巨頭涉嫌壟斷的調查和監管。 ...

    熱議 2020-11-14
  • 我們經常用WPS的時候,如果需要輸入波浪號~,會發現鍵盤上的波浪號輸入之后在最上面,但是為了美觀,我們希望波浪號顯示在中間。這里總結了三個方法分享給大家 ......

    WPS教程 2023-02-18
  • 答:不一樣。 字類不同、數量不同、使用也不同。 1、字類不同 仿宋gb2312只包含符合GB2312標準的簡體字,仿宋包含所有的簡體字,包括特殊的繁體字。 2、版本不 ......

    軟件教程 2023-02-17
  • 1、下載番茄作家助手,登錄你自己的賬號進入。2、在首頁這里可以看到你創建的書籍,或者新建一個小說,點擊這個黃色的編輯圖標。3、進入以后,再點擊“創建章節 ......

    軟件教程 2023-03-16
  • 答:中高端水平 i513500hx在處理器當中是處于一個中高端的水平。 i513500hx是第十一代酷睿處理器系列的一員,基礎頻率為2.4GHz,表現十分的不錯。 i513500hx介 ......

    硬件知識 2023-04-27
  • 羅技g304dpi燈顏色代表什么:1、藍色:這種情況是正常工作的顯示,如果說是常亮或者閃爍,那都沒有問題這是在正常工作呢。2、紅色:如果說是紅燈閃爍的話那就是 ......

    硬件知識 2023-03-16
  • 打開軟件,直接填寫就可以。 1、下載安裝easyconnect軟件, 2、打開easyconnect應用,在如圖所示的“服務器地址”一欄輸入如圖所示網址,點擊“連接”, 3、等 ......

    軟件教程 2023-04-03

熱門排行

    最近更新

      返回頂部
      亚洲国产精品人久久,亚洲va国产日韩欧美精品色婷婷,久久久久88色偷偷,免费人成黄页在线观看国际
      亚洲欧洲中文日韩久久av乱码| 亚洲伊人伊色伊影伊综合网 | 中文字幕一区二区视频| 国产精品一区二区在线播放| 91麻豆精品91久久久久同性| 午夜精品免费在线观看| 国产色产综合色产在线视频| 97成人超碰视| 国产丝袜在线精品| 成人黄色小视频| 精品粉嫩aⅴ一区二区三区四区| 国产呦萝稀缺另类资源| 欧美日本乱大交xxxxx| 亚洲欧美日韩国产成人精品影院| 欧美主播一区二区三区| 精品亚洲成a人| 日韩一区二区三区高清免费看看| 国产成人综合自拍| 日韩中文字幕1| 亚洲人成网站精品片在线观看| 精品国产乱码久久久久久久 | 色成人在线视频| 国产日韩欧美综合一区| 不卡一区二区中文字幕| 久久久一区二区| 欧美电影免费观看高清完整版在线观看 | 91福利在线免费观看| 国产一区二区三区最好精华液| 日韩欧美亚洲另类制服综合在线 | 中日韩av电影| 欧美性xxxxxxxx| 91蝌蚪porny成人天涯| 99久久久久久99| 97久久人人超碰| 国产99久久久国产精品| 国产精品网曝门| 欧美刺激午夜性久久久久久久 | 欧美色图一区二区三区| 91影院在线免费观看| 国产成人一区在线| 3d成人h动漫网站入口| 久久亚洲精品国产精品紫薇| 国产精品久久毛片| 日本亚洲电影天堂| 国产+成+人+亚洲欧洲自线| 在线观看成人免费视频| 欧美成人a在线| 亚洲日本在线视频观看| 亚洲美女偷拍久久| 最近中文字幕一区二区三区| 亚洲成av人在线观看| 久久国产综合精品| 91成人国产精品| 亚洲国产成人私人影院tom| 日韩免费成人网| 久久精品日产第一区二区三区高清版 | 色激情天天射综合网| 精品久久国产97色综合| 国产女人18毛片水真多成人如厕 | 亚洲影视资源网| 狠狠色综合播放一区二区| 97久久精品人人做人人爽50路| 国产拍欧美日韩视频二区 | 色先锋aa成人| 欧美久久一二三四区| 亚洲综合精品久久| 91精品国产综合久久婷婷香蕉| 亚洲精品一线二线三线| 一区二区三区蜜桃网| 91丝袜美腿高跟国产极品老师 | 久久成人久久爱| 欧美丝袜自拍制服另类| 亚洲人成网站影音先锋播放| 蜜臀av一级做a爰片久久| 国产肉丝袜一区二区| 欧洲精品视频在线观看| 黄色精品一二区| 国产精品伦理在线| 欧美日韩电影一区| 日韩不卡在线观看日韩不卡视频| 欧美怡红院视频| 成人动漫在线一区| 自拍偷拍亚洲激情| 北岛玲一区二区三区四区| 五月婷婷久久综合| 综合色天天鬼久久鬼色| 国产亚洲精品资源在线26u| 国产精品美女一区二区三区| 欧美久久久一区| 精品日韩成人av| 欧美日本一区二区三区四区| 日韩三级.com| 久久综合久久99| 欧美色手机在线观看| 久久夜色精品一区| 欧美成人video| 精品国偷自产国产一区| 欧美性猛片aaaaaaa做受| 国内精品写真在线观看 | 首页亚洲欧美制服丝腿| 国产精品美女久久久久久久久久久| 精品噜噜噜噜久久久久久久久试看| 日韩欧美成人午夜| 日本一区二区久久| www欧美成人18+| 亚洲精品视频一区| 麻豆免费看一区二区三区| 亚洲久本草在线中文字幕| 日韩午夜激情电影| 美日韩一区二区三区| 亚洲h动漫在线| 日日夜夜一区二区| 国产欧美日韩在线看| 日韩伦理av电影| 久久精品一区二区三区四区| 一区二区理论电影在线观看| 国产午夜精品久久久久久久| 欧美国产精品一区二区三区| 亚洲综合免费观看高清在线观看| 亚洲自拍偷拍九九九| 成人丝袜视频网| 欧美精品一区二区蜜臀亚洲| 日韩欧美亚洲国产精品字幕久久久| 欧美日韩国产美| 久久亚洲私人国产精品va媚药| 国产精品三级久久久久三级| 亚洲成人动漫在线观看| 91国产成人在线| 有码一区二区三区| 国产麻豆成人精品| 久久精品欧美一区二区三区麻豆| 亚洲欧洲三级电影| 一本在线高清不卡dvd| 一区二区三区91| 欧美乱妇15p| 国产精品91xxx| 亚洲色图第一区| 日韩欧美国产高清| 国产精品77777| 久久久久久97三级| 91色在线porny| 日韩av一区二区在线影视| 国产婷婷一区二区| 欧美亚洲尤物久久| 欧美日韩色综合| 欧美草草影院在线视频| 日韩电影免费在线| 五月综合激情婷婷六月色窝| 欧美一卡2卡3卡4卡| 日本丶国产丶欧美色综合| 日韩—二三区免费观看av| 中文字幕一区二| 亚洲成人福利片| 欧美一区二区三区色| 91热门视频在线观看| 粉嫩aⅴ一区二区三区四区五区| 午夜精品一区二区三区免费视频| 亚洲欧洲成人自拍| 亚洲乱码国产乱码精品精98午夜| 久久久久久久久久久99999| 777久久久精品| 欧美高清www午色夜在线视频| 欧美日韩三级视频| 精品福利一二区| 久久久久久久av麻豆果冻| 正在播放亚洲一区| 精品国产乱码久久久久久夜甘婷婷| 欧美一区二区三区不卡| 91精品国产乱| 欧美激情一区在线| 午夜伊人狠狠久久| 国产黄色成人av| 日本乱人伦一区| 精品成人免费观看| 亚洲图片欧美综合| 国产精品一线二线三线精华| 色av成人天堂桃色av| 久久精品国产精品亚洲精品 | 亚洲一二三区在线观看| 亚洲自拍偷拍麻豆| 99国内精品久久| 国产乱码精品一区二区三区忘忧草| 国产成人av福利| 成人精品国产福利| 日韩一区二区在线观看| 国产原创一区二区三区| 成人动漫视频在线| 91一区二区在线| 欧美日本一区二区在线观看| 一区二区三区精品在线| 热久久久久久久| 欧美电影在线免费观看| 亚洲一区在线电影| 91色乱码一区二区三区| 国产精品视频第一区| 91美女片黄在线观看| 中文字幕高清一区| 国产成人精品免费视频网站| 综合在线观看色| 91精品国产美女浴室洗澡无遮挡|