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...