您好,登錄后才能下訂單哦!
背景:
熱升級是什么呢?了解nginx的同學都知道,nginx是支持熱升級的,可以用老進程服務先前鏈接的鏈接,使用新進程服務新的鏈接,即在不停止服務的情況下完成系統的升級與運行參數修改。
環境:
原因:
沿著beego官方文檔開啟Graceful后, 運行kill -HUP pid重啟進程的時候, 舊連接其實并沒有繼續處理, 而是直接關閉了隨著舊進程,導致請求返回504。
解決:
看了代碼是在grace/server.go中process.Kill()的時候把新進程的父進程直接殺死, 發送的是SIGKILL信號,進程不會處理,直接被殺死,其實在handleSignals函數里面也確實沒有處理這種信號。所以,代碼改為如下:
文件:grace/server.go, 函數ListenAndServe()以及 ListenAndServeTLS()
//err = process.Kill()
err = process.Signal(os.Interrupt)
最后:
經過測試可以正常處理完未完成的連接。
以需求驅動技術,技術本身沒有優略之分,只有業務之分。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。