首頁 > 運維 > Nginx > 主體

nginx維運中如何平滑升級

王林
發布: 2023-05-15 17:34:06
轉載
1363 人瀏覽過

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

#   首先,使用新的可執行程式取代舊的(最好做好備份),然後,發送USR2(kill-USR2pid)訊號給主程序。

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

  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實例會同時執行,一起處理輸入的請求。要逐步停止舊的實例,你必須傳送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)

#   這時,因為舊的伺服器還尚未關閉它監聽的套接字,所以,透過下面的幾步,你仍可以恢復舊的伺服器:

  發送HUP訊號給舊的主進程-它將在不重載設定檔的情況下啟動它的工作進程

  發送QUIT訊號給新的主進程,要求其從容關閉其工作進程

#   發送TERM訊號給新的主進程,迫使其退出

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

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

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

#   PIDPPIDUSER%CPUVSZWCHANCOMMAND

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

  3626536264nobody0.01364kqreadnginx:workerprocess(nginx)

#   3626636264nobody0.01364kqreadnginx:workerprocess(nginx)

#   3626736264nobody0.01364kqreadnginx:workerprocess(nginx)

#

以上是nginx維運中如何平滑升級的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:yisu.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!