這篇文章主要講解了一次Docker中Redis連接暴增的問題解決方案,內容清晰明了,對此有興趣的小伙伴可以學習一下,相信大家閱讀完之后會有幫助。
10年積累的成都做網站、成都網站設計經驗,可以快速應對客戶對網站的新想法和需求。提供各種問題對應的解決方案。讓選擇我們的客戶得到更好、更有力的網絡服務。我雖然不認識你,你也不認識我。但先網站設計后付款的網站建設流程,更有東興免費網站建設讓你可以放心的選擇與我們合作。周六生產服務器出現redis服務器不可用狀態,錯誤信息為:
狀態不可用,等待后臺檢查程序恢復方可使用。Unexpected end of stream; expected type 'Status'
如下圖所示,下圖6300就是我們redis服務器運行的端口。
頭一次碰到此類問題,心想難道是redis掛掉了,隨即通過telnet ip+端口。發現運行正常,然后就想著進入redis看下目前連接情況。一看發現竟然高達1903條這么多。
然后想著應該是代碼創建redis連接過多導致的,查看代碼。
發現redis創建只有這一個地方有,這里也是服務注冊時才執行。也就是應用程序啟動時才被執行一次。然后整個項目查找,沒有其他地方再有調用redis初始化。
心有不甘,難道是每次在redis讀寫數據時都會創建連接嗎?會和讀寫頻繁有關系嗎?總感覺不會啊,隨即創建測試代碼進行測試一番。
在本地搭建了一個redis環境,測試之前先看看接數多少,目前看只有1個,也就是目前的cmd連接客戶端,這個屬于正常的了。
開始測試,運行程序。代碼是創建一個連接對象,并一共測試1000次寫,和1000次讀。
不管我怎么測試連接都是6個,那么也就是說我們程序最多創建了5個連接,當然主要有線程池在里面。
所以基本的存儲讀取這塊代碼肯定是沒問題。
但代碼這塊也沒算完全放棄排查,因為生產服務器通過docker運行著大約6個應用程序。都是連接的同一個redis,會不會是其他應用程序導致的?
然后就想直接通過redis 連接列表里的中隨便一個端口來查詢對應的進程信息就可以知道是哪些應用程序了。
Linux 中通過查詢網絡端口號顯示進程信息。
netstat -atunlp | grep 60852
文章名稱:一次Docker中Redis連接暴增的問題解決方案-創新互聯
文章分享:http://vcdvsql.cn/article2/dgdsic.html
成都網站建設公司_創新互聯,為您提供服務器托管、品牌網站建設、網站策劃、移動網站建設、品牌網站設計、App設計
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯