swoole reload 平滑重啟小實踐

2021-10-06 02:19:14 字數 3125 閱讀 6688

官方參考:

reload()安全地重啟所有 worker/task 程序。

swoole\server

->

reload

(bool $only_reload_taskworkrer

=false

): bool

平滑重啟可呼叫reload()方法 或者 執行kill -usr1 主程序pid命令來重啟所有worker程序

測試**:

));// 伺服器啟動時執行一次

$server

->on(

'start'

,function

($server))

;// 伺服器啟動時執行一次

$server

->on(

'managerstart'

,function

($server))

;// 每個 worker 程序啟動或重啟時都會執行

$server

->on(

'workerstart'

,function

($server

,$workerid))

;$server

->on(

'connect'

,function

($server

,$fd

,$reactorid))

;$server

->on(

'request'

,function

($request

,$response

)use

($server

)echo

'request - worker id: '

.$server

->

worker_id

.php_eol

;// 測試reload

$test

=new

test()

;echo

$test

->

str?

?'not include file'

;$act

=$request

->

get[

'act']?

?'';if

($act

=='reload'

)$response

->

header

("content-type"

,"text/html; charset=utf-8");

$response

->

end(

"hello swoole");

});$server

->

start()

;workerstart.php

class

test

啟動服務

php reload_test.php

start

managerstart

workerstart - worker id: 0

workerstart - worker id: 1

include file: workstart

include file: workstart

可以看到輸出兩行include file: workstart, 因為worker_num設定為2, 有2個worker程序

此時開啟瀏覽器, 訪問

connect - worker id: 0 , fd: 1 , reactorid: 0

request - worker id: 0

include file: workstart.php

然後修改workerstart.php檔案中變數$strinclude file: test.php, 再次訪問

依舊輸出include file: workstart.php

connect - worker id: 0 , fd: 2 , reactorid: 0

request - worker id: 0

include file: workstart.php

訪問?act=reload觸發**$server->reload()或者 執行命令kill -usr1 主程序pid, 讓程式重新include檔案達到平滑重啟的效果

swoole reload ...

[2020-05-12 20:56:41 $131.0] info server is reloading all workers now

reload success

workerstart - worker id: 0

workerstart - worker id: 1

再次訪問, 看到更新成功, 輸出include file: test.php

connect - worker id: 0 , fd: 4 , reactorid: 0

request - worker id: 0

include file: test.php

平滑重啟 nginx版本平滑公升級

軟體新版有了更棒的功能?當前版本有安全漏洞?架構調整,需要新版本來支援?這些場景是不是很熟悉?你可能條件反射的就說出 公升級版本啊!是的,運維人永遠無法避免的乙個工作就是軟體的版本公升級 本文舉例nginx1.13.9公升級到1.14.2版本,nginx主程序id是1533 將當前的nginx安裝目...

nginx平滑重啟與平滑公升級的方法

如何實現nginx平滑重啟與平滑公升級?平滑重啟 kill hup cat usr local www nginx logs nginx.pid 平滑公升級nginx 得到編譯引數 用上面這段編譯 然後make,千萬別make install make完了 在objs目錄下就多了個nginx,這個就...

fpm平滑重啟 詳解nginx及FPM平滑重啟

平滑重啟 gr是graceful restart 平滑重啟 的簡稱,是一種在協議重啟時保證 業務不中斷的機制。gr機制的核心在於 當某裝置進行協議重啟時,能夠通知其周邊裝置在一定時間內將到該裝置的鄰居關係和路由保持穩定。在協議重啟完畢後,周邊裝置協助其進行資訊 包括支援gr的路由 mpls相關協議所...