tomcat怎麼平滑更新專案 nginx平滑公升級

2021-10-19 23:10:55 字數 2161 閱讀 2708

nginx是個用起來很爽的webserver。今天介紹一下nginx的平滑公升級。

為了驗證nginx是真正的平滑公升級,在公升級過程中使用webbench進行壓力測試,檢視公升級過程中nginx是否工作正常。

平滑公升級完全參照張宴的nginx書操作,之前需要檢視現有nginx版本、編譯安裝的引數、程序資料等;

檢視版本、編譯引數:[root@test shell]# /usr/local/nginx/sbin/nginx -v

程序資料:[root@test shell]# ps -ef |egrep -egrep|egrep nginx

root 14859 1 0 oct22 ? 00:00:00 nginx: master process /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

下面進行平滑公升級操作:

wget

tar -zvxf nginx-1.5.6.tar.gz

cd nginx-1.5.6

2、執行[root@test nginx-1.5.6]# kill -usr2 14859 【老版本的nginx主程序號】

3、舊版本 nginx 的主程序將重新命名它的 pid 檔案例如 .oldbin(如:/usr/local/nginx/logs/nginx.pid.oldbin)

4、此時,新舊兩個版本的nginx程序都在執行中(預設,新版本的nginx在安裝後就自動執行。)此時執行 kill -winch 【老版本的nginx主程序號】 使老版本的nginx 的worker process 逐步結束;[root@test shell]# kill -winch 14859

[root@test shell]# ps -ef |egrep nginx

root 4906 14859 0 11:19 ? 00:00:00 nginx: master process /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

root 4978 29465 0 11:20 pts/0 00:00:00 egrep nginx

root 14859 1 0 oct22 ? 00:00:00 nginx: master process /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

可以看到nginx: worker processisshutting down,說明老版本的nginx worker process正在逐步關閉。

5,待所有舊版本的worker process全部退出,

僅由新的工作程序來處理輸入的請求了。使用kill -quit14859 【老版本的nginx主程序號】從容關閉舊版本master(主程序號)。完成版本公升級。

此時檢視nginx版本資訊、編譯資訊、及程序資訊;

[root@test nginx-1.5.6]# /usr/local/nginx/sbin/nginx -v

nginx version: nginx/1.5.6

built by gcc 4.1.2 20080704 (red hat 4.1.2-54)

tls sni support disabled

以下為新版本的程序資訊

[root@test shell]# ps -ef |egrep nginx

root 4906 1 0 11:19 ? 00:00:00 nginx: master process /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

root 5082 29465 0 11:22 pts/0 00:00:00 egrep nginx

再檢視開頭提到的webbench 測試我總共請求10分鐘併發1000 共88萬個請求僅5個請求失敗。證明這次平滑公升級沒有影響線上服務。

git拉取項,更新專案

荊軻刺秦王 之前專案中用svn多一些,svn是集中式的,可以理解為無論提交和更新都是對中心版本庫的操作,如果某台機器提交的 有問題,很可能導致 版本庫的也會有問題。git 是分布式的,一般情況下,我們可以推送給同事自己修改的地方。但無論是svn還是git 他們的操作流程大體相同,在日常工作中都是要先...

npm更新專案中全部依賴

在基於react native的迭代過程中,會出現我們的元件庫版本低於當前穩定版本差距比較大,此時可能需要批量對元件進行公升級,下面記錄一下關於這次對於我們專案中元件公升級的操作,僅作為操作筆記。cd到package.json目錄中,執行npm outdated 包名當前版本 滿足semer版本的最...

使用snv命令來更新專案

專案多了使用svn命令來更新專案絕對是個好主意,下面的批處理可以對工程目錄下的所有專案進行更新。echo off rem 設定環境變數,在別的電腦使用此批處理只需要修改這裡的環境變數就行了 echo 正在更新 p.svn bin tortoiseproc.exe command update pat...