2020.10.24故障分析與思考

前言

時隔一周,萬萬沒有想到有除了一個嚴重的線上問題,10.24 晚上21點的時候,出現(xiàn)大量的用戶請求超時,真是個悲劇呀。

故障回顧

1)故障描述

24號20:58分開始,有老師和學(xué)生反饋直播間出現(xiàn)卡死現(xiàn)象,之后有同學(xué)反饋作業(yè)無法提交。頁面提示advisor.estudy.cn 網(wǎng)關(guān)處理請求異常,請聯(lián)系管理員!

2)故障過程回顧

時間 過程
10.24 20:58 有老師和學(xué)生反饋直播間出現(xiàn)卡死現(xiàn)象
10.24 21:05 出現(xiàn)大面積老師和學(xué)生反饋直播間卡死崩潰,頁面報錯:advisor.estudy.cn 網(wǎng)關(guān)處理請求異常,請聯(lián)系管理員!
10.24 21:07 查看系統(tǒng)所有的接口都出現(xiàn)大面積超時
10.24 21:17 部分用戶已正常,部分用戶仍有問題
10.24 21:25 應(yīng)用擴容,問題修復(fù)

故障思考

系統(tǒng)

這個問題相對比較明顯一些,就是應(yīng)用資源不足的問題,我們用戶量從5W在線變成了7W在線,導(dǎo)致應(yīng)用資源不足。
分析過程如下
1、我們通過我們的監(jiān)控發(fā)現(xiàn)大量的請求超時。


請求超時

2、還有就是我們的應(yīng)用出現(xiàn)crash的報警,大量的容器出現(xiàn)重啟的現(xiàn)象。


Evicated

3、通過K8S的日志可以發(fā)現(xiàn),由于內(nèi)存不足導(dǎo)致容器的強制重啟。

應(yīng)用

那么,為什么會出現(xiàn)內(nèi)存不足的情況呢?
先了解一些比較簡單的知識點:
1、k8s分配的內(nèi)存是有上限的,我們配置的上限是4G
2、JVM進程內(nèi)存=堆內(nèi)存+線程棧+堆外內(nèi)存+代碼區(qū)+其他
3、我們采用的dubbo線程池方式為fixed,固定大小線程池
4、線程線大小默認1M,可以由-Xss參數(shù)修改


image.png

因此,根據(jù)線程數(shù),最大占用的數(shù)量有可能為1425M。
我們的應(yīng)用,占用內(nèi)存=堆內(nèi)存(3g)+堆外(192M)+線程棧(1M*1425)最大約為4.5g
因此是我們配置的內(nèi)存限制太小了。
因此解決方案很簡單,減少dubbo線程池fixed的數(shù)量就好了

人員與管理

整體全部容器化之后,很少在系統(tǒng)的極限壓力下面對系統(tǒng)進行測試,有必要進行這樣的測試,分析整體系統(tǒng)的穩(wěn)定性。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容