溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

nginx運維中如何平滑升級

發(fā)布時間:2022-03-03 09:30:09 來源:億速云 閱讀:154 作者:小新 欄目:web開發(fā)

這篇文章主要為大家展示了“nginx運維中如何平滑升級”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“nginx運維中如何平滑升級”這篇文章吧。

  你可以在不中斷服務的情況下-新的請求也不會丟失,使用新的nginx可執(zhí)行程序替換舊的(當升級新版本或添加/刪除服務器模塊時)。(推薦學習:nginx運維)

  首先,使用新的可執(zhí)行程序替換舊的(最好做好備份),然后,發(fā)送USR2(kill-USR2pid)信號給主進程。

  主進程將重命名它的.pid文件為.oldbin(比如:/usr/local/nginx/logs/nginx.pid.oldbin),然后執(zhí)行新的可執(zhí)行程序,依次啟動新的主進程和新的工作進程:

  PIDPPIDUSER%CPUVSZWCHANCOMMAND

  331261root0.01164pausenginx:masterprocess/usr/local/nginx/sbin/nginx

  3313433126nobody0.01368kqreadnginx:workerprocess(nginx)

  3313533126nobody0.01380kqreadnginx:workerprocess(nginx)

  3313633126nobody0.01368kqreadnginx:workerprocess(nginx)

  3626433126root0.01148pausenginx:masterprocess/usr/local/nginx/sbin/nginx

  3626536264nobody0.01364kqreadnginx:workerprocess(nginx)

  3626636264nobody0.01364kqreadnginx:workerprocess(nginx)

  3626736264nobody0.01364kqreadnginx:workerprocess(nginx)

  在這時,兩個nginx實例會同時運行,一起處理輸入的請求。要逐步停止舊的實例,你必須發(fā)送WINCH信號給舊的主進程,然后,它的工作進程就將開始從容關閉:

  PIDPPIDUSER%CPUVSZWCHANCOMMAND

  331261root0.01164pausenginx:masterprocess/usr/local/nginx/sbin/nginx

  3313533126nobody0.01380kqreadnginx:workerprocessisshuttingdown(nginx)

  3626433126root0.01148pausenginx:masterprocess/usr/local/nginx/sbin/nginx

  3626536264nobody0.01364kqreadnginx:workerprocess(nginx)

  3626636264nobody0.01364kqreadnginx:workerprocess(nginx)

  3626736264nobody0.01364kqreadnginx:workerprocess(nginx)

  一段時間后,舊的工作進程處理了所有已連接的請求后退出,就僅由新的工作進程來處理輸入的請求了:

  PIDPPIDUSER%CPUVSZWCHANCOMMAND

  331261root0.01164pausenginx:masterprocess/usr/local/nginx/sbin/nginx

  3626433126root0.01148pausenginx:masterprocess/usr/local/nginx/sbin/nginx

  3626536264nobody0.01364kqreadnginx:workerprocess(nginx)

  3626636264nobody0.01364kqreadnginx:workerprocess(nginx)

  3626736264nobody0.01364kqreadnginx:workerprocess(nginx)

  這時,因為舊的服務器還尚未關閉它監(jiān)聽的套接字,所以,通過下面的幾步,你仍可以恢復舊的服務器:

  發(fā)送HUP信號給舊的主進程-它將在不重載配置文件的情況下啟動它的工作進程

  發(fā)送QUIT信號給新的主進程,要求其從容關閉其工作進程

  發(fā)送TERM信號給新的主進程,迫使其退出

  如果因為某些原因新的工作進程不能退出,向其發(fā)送KILL信號

  新的主進程退出后,舊的主進程會由移除.oldbin前綴,恢復為它的.pid文件,這樣,一切就都恢復到升級之前了。

  如果嘗試升級成功,而你也希望保留新的服務器時,發(fā)送QUIT信號給舊的主進程使其退出而只留下新的服務器運行:

  PIDPPIDUSER%CPUVSZWCHANCOMMAND

  362641root0.01148pausenginx:masterprocess/usr/local/nginx/sbin/nginx

  3626536264nobody0.01364kqreadnginx:workerprocess(nginx)

  3626636264nobody0.01364kqreadnginx:workerprocess(nginx)

  3626736264nobody0.01364kqreadnginx:workerprocess(nginx)

以上是“nginx運維中如何平滑升級”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業(yè)資訊頻道!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI