20190103生產問題 持續更新

2021-09-06 20:11:50 字數 1027 閱讀 6905

上午9點,資料庫cpu達到100%,導致資料庫服務超時,不可用

查詢原因:個人使用者許可權表大概7000萬資料,9點業務高發期,而且每一次操作都會驗證許可權。大量的併發被掛起,導致雪崩,  1、而平時不會出現的原因是有快取,而且昨晚上游系統下發資料導致快取全部被清空。

2、個人使用者許可權太大,一次查詢可能會查過上萬條資料

3、有一張表,10萬資料,6個優先順序,需要6個sql進行union查詢,導致查詢慢,cpu高 

後來進行優化,分成6個單獨的sql查詢,優先順序高的有值,就不會繼續查,否則繼續查sql.

上線後,的確針對這個sql沒有了超時等情況,cpu在80%以下,沒收到報警,很開心

但其他查詢:例如這個許可權查詢總是超時,而且多個服務都癱瘓,

最後:發現資料庫qps高峰在6000左右,拆分後的sql執行次數一天在100萬次左右,於是提高資料庫連線數800到1200,儘管cpu到了90%左右,但服務都可以訪問了,懷疑是qps太高,但連線數不夠,導致服務不可用

2019.1.8:補充1

預載入所有的資料到快取後,但依然資料庫對應sql訪問量不減,無奈之下甚至開始r懷疑edis是否取值成功

後來突然想到:存在的放在redis,那不存在的還是要查6次資料庫啊,

於是針對這個處理,資料庫查不到的,放到redis裡,value預設0,於是就可以無需查詢資料庫了,全部從redis走

2019.1.8:補充2

教訓:一定要仔細關注mysql的慢查詢語句,針對執行多次的語句,看一下它的查詢條件,重點關注。我們就是自認為後年的引數是n個查詢條件中的乙個,沒有去關注查詢條件。後來發現 就是這個sql ,把他對應的值放到快取裡後,系統立馬快了很多。

2019.1.9:補充

qps不變,但資料庫cpu在保持在5%,和前端時間的90%天差地別

計畫解決策略:

1、下發資料時,修改zk值,為防止白天載入熱點資料到redis會影響白天業務,特於晚上定時任務:預載入使用者許可權熱點資料,修改完畢後,修改zk值

2、分庫儲存(按使用者分庫),畢竟資料量太大

3、預載入的資料:過期時間加隨機值

2018 9 28 生產問題備註回憶

生產問題總結 表現 1 應用伺服器掛了2臺,資料庫服務記憶體突然公升高 2 資料庫資料許可權表查詢超時 原因 大批量的人為匯入excel同時操作,1 匯入前會檢驗使用者許可權,預設載入在快取裡,但此時redis快取沒有起作用,導致大量請求直接查詢資料庫,造成超時。2 檢驗後,計算實時資料時,取預留比...

2020 12 02 生產問題記錄

專案之前是採用oracle資料庫進行儲存,上週進行了國產化資料庫遷移改造,改造之後,有對接系統反饋有程式問題。原有程式介面一直沒有問題,正常執行。且在25號後沒有對 進行更改,對比 也沒有問題,單獨執行sql語句也是能正常查出符合的資料。大致sql是要查詢出一天內的資訊記錄,使用的是between ...

11 9 生產環境部署

fabric ca在整個證書管理環節中處於十分核心的位置。在生產環境中部署時,必須從多個方面進行考慮,以充分確保安全性 可靠性 規範性等指標。1.根證書的生成 根證書目前可以通過從權威機構 包括golbalsign verisign 申請,或採用自行簽名的方式生成。技術上來講,兩者都可以完成部署過程...