溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

beego高級編程---->grace模塊熱重啟導致舊

發(fā)布時間:2020-06-23 02:22:22 來源:網(wǎng)絡 閱讀:7364 作者:asd1123509133 欄目:開發(fā)技術

背景:

        熱升級是什么呢?了解nginx的同學都知道,nginx是支持熱升級的,可以用老進程服務先前鏈接的鏈接,使用新進程服務新的鏈接,即在不停止服務的情況下完成系統(tǒng)的升級與運行參數(shù)修改。

環(huán)境:

beego高級編程---->grace模塊熱重啟導致舊


原因:

        沿著beego官方文檔開啟Graceful后, 運行kill -HUP pid重啟進程的時候, 舊連接其實并沒有繼續(xù)處理, 而是直接關閉了隨著舊進程,導致請求返回504。 


解決:

        看了代碼是在grace/server.go中process.Kill()的時候把新進程的父進程直接殺死, 發(fā)送的是SIGKILL信號,進程不會處理,直接被殺死,其實在handleSignals函數(shù)里面也確實沒有處理這種信號。所以,代碼改為如下:
文件:grace/server.go, 函數(shù)ListenAndServe()以及 ListenAndServeTLS()

    //err = process.Kill()
     err = process.Signal(os.Interrupt)


最后:

        經(jīng)過測試可以正常處理完未完成的連接。



以需求驅(qū)動技術,技術本身沒有優(yōu)略之分,只有業(yè)務之分。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI