背景:
熱更新是什麼呢?了解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,如需轉載請自行聯系原作者