天天看點

beego進階程式設計---->grace子產品熱重新開機導緻舊程序未處理完請求直接退出

背景:

        熱更新是什麼呢?了解nginx的同學都知道,nginx是支援熱更新的,可以用老程序服務先前連結的連結,使用新程序服務新的連結,即在不停止服務的情況下完成系統的更新與運作參數修改。

環境:

<a href="http://s2.51cto.com/wyfs02/M00/8D/55/wKiom1iX8jjS6H_mAABkLwCMumo332.jpg-wh_500x0-wm_3-wmp_4-s_2116272713.jpg" target="_blank"></a>

原因:

解決:

        看了代碼是在grace/server.go中process.Kill()的時候把新程序的父程序直接殺死, 發送的是SIGKILL信号,程序不會處理,直接被殺死,其實在handleSignals函數裡面也确實沒有處理這種信号。是以,代碼改為如下:

檔案:grace/server.go, 函數ListenAndServe()以及 ListenAndServeTLS()

最後:

        經過測試可以正常處理完未完成的連接配接。

以需求驅動技術,技術本身沒有優略之分,隻有業務之分。

      本文轉自asd1123509133 51CTO部落格,原文連結:http://blog.51cto.com/lisea/1895219,如需轉載請自行聯系原作者

繼續閱讀