日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

openresty开发系列3--nginx的平滑升级

發布時間:2025/3/20 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 openresty开发系列3--nginx的平滑升级 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

openresty開發系列3--nginx的平滑升級

nginx服務器從低版本升級為高版本,如果強行停止服務,會影響正在運行的進程。

平滑升級不會停掉正在運行中的進程,這些進程會繼續處理請求。但不會接受新請求,這些老的進程在處理完請求之后會停止。此平滑升級過程中,新開的進程會被處理。

一)平滑升級
進入nginx可執行程序的目錄
???? #? cd /usr/local/nginx/sbin/
???? # sbin/nginx -v
?????? nginx version: nginx/1.13.0?? ?#查看nginx版本

1)下載高版本nginx
wget http://nginx.org/download/nginx-1.13.2.tar.gz

執行指令生成版本的Nginx二進制程序
#? ./configure
# make??? #不能執行 make install
# cd objs
此目錄下 有高版本的nginx
備份低版本的nginx
cd /usr/local/nginx/sbin/
cp nginx nginx.old
執行強制覆蓋,將低版本的nginx替換為剛編譯好的高版本的nginx
[root@node5 objs]# cp -rfp /usr/local/src/nginx-1.13.2/objs/nginx /usr/local/nginx/sbin/
cp: overwrite ‘/usr/local/nginx/sbin/nginx’? y

測試一下新復制過來文件生效情況:
# /usr/local/nginx/sbin/nginx -t
[root@node5 objs]# ps -ef|grep nginx
root????? 43151????? 1? 0 19:40 ???????? 00:00:00 nginx: master process /usr/local//nginx/sbin/nginx
nobody??? 43152? 43151? 0 19:40 ???????? 00:00:00 nginx: worker process
nobody??? 43153? 43151? 0 19:40 ???????? 00:00:00 nginx: worker process
nobody??? 43154? 43151? 0 19:40 ???????? 00:00:00 nginx: worker process
nobody??? 43155? 43151? 0 19:40 ???????? 00:00:00 nginx: worker process
root????? 45585? 43080? 0 19:46 pts/1??? 00:00:00 grep --color=auto nginx
[root@node5 objs]# cat /usr/local/nginx/logs/nginx.pid
43151

2)執行信號平滑升級
# kill -USR2 `cat /usr/local/nginx/logs/nginx.pid`? 更新配置文件

[root@node5 objs]# kill -USR2 `cat /usr/local/nginx/logs/nginx.pid`

給nginx發送USR2信號后,nginx會將logs/nginx.pid文件重命名為nginx.pid.oldbin,然后用新的可執行文件啟動一個新的nginx主進程和對應的工作進程,并新建一個新的nginx.pid保存新的主進程號

[root@node5 objs]# cat /usr/local/nginx/logs/nginx.pid
45589


3)kill -WINCH 舊的主進程號
舊的主進程號收到WINCH信號后,將舊進程號管理的舊的工作進程優雅的關閉。即一段時間后舊的工作進程全部關閉,只有新的工作進程在處理請求連接。這時,依然可以恢復到舊的進程服務,因為舊的進程的監聽socket還未停止。
處理完后,工作進程會自動關閉
[root@node5 objs]# ps -ef|grep nginx
root????? 43151????? 1? 0 19:40 ???????? 00:00:00 nginx: master process /usr/local//nginx/sbin/nginx
nobody??? 43152? 43151? 0 19:40 ???????? 00:00:00 nginx: worker process
nobody??? 43153? 43151? 0 19:40 ???????? 00:00:00 nginx: worker process
nobody??? 43154? 43151? 0 19:40 ???????? 00:00:00 nginx: worker process
nobody??? 43155? 43151? 0 19:40 ???????? 00:00:00 nginx: worker process
root????? 45589? 43151? 0 19:46 ???????? 00:00:00 nginx: master process /usr/local//nginx/sbin/nginx
nobody??? 45590? 45589? 0 19:46 ???????? 00:00:00 nginx: worker process
nobody??? 45591? 45589? 0 19:46 ???????? 00:00:00 nginx: worker process
nobody??? 45592? 45589? 0 19:46 ???????? 00:00:00 nginx: worker process
nobody??? 45593? 45589? 0 19:46 ???????? 00:00:00 nginx: worker process
root????? 45595? 43080? 0 19:46 pts/1??? 00:00:00 grep --color=auto nginx

4)# kill -QUIT `cat /usr/local/nginx/logs/nginx.pid.oldbin` 優雅的關閉
給舊的主進程發送QUIT信號后,舊的主進程退出,并移除logs/nginx.pid.oldbin文件,nginx的升級完成。

升級完成了,最后在看一下升級后的版本

查看
[root@node5 objs]# /usr/local/nginx/sbin/nginx -v
nginx version: nginx/1.13.2

已經平滑升級成功

二)中途停止升級,回滾到舊的nginx

在步驟(3)時,如果想回到舊的nginx不再升級

(1)給舊的主進程號發送HUP命令,此時nginx不重新讀取配置文件的情況下重新啟動舊主進程的工作進程。
kill -HUP 43151 --舊主進程號
重啟工作進程

(2)優雅的關閉新的主進程
kill -QUIT 45589? --新主進程號

轉載于:https://www.cnblogs.com/reblue520/p/11428939.html

總結

以上是生活随笔為你收集整理的openresty开发系列3--nginx的平滑升级的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。