生产环境项目问题记录系列(一):一次循环数据库拖垮服务器问题
生活随笔
收集整理的這篇文章主要介紹了
生产环境项目问题记录系列(一):一次循环数据库拖垮服务器问题
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
心血來潮,決定時不時記錄下生產項目中遇到的問題。
今天的問題是這樣的,昨天晚上大約7點左右,服務器報警,CPU暴漲。通過監控頁面發現某個訂閱MQ的服務接口有400多個超過10秒的請求(正常只有100-200ms),第一時間懷疑是不是MQ發生了問題,短時間里發送了大量MQ,但是細想又不會,畢竟MQ設置了最大限度。
想也沒有,動手查才是最準確的,通過ELK發現2分半時間發了1500個MQ,并不多(1000個/每分鐘是正常的)。MQ沒問題開始考慮是不是代碼問題,去查了下代碼沒發現特別顯眼的問題。項目Leader把cat扔給我去查,不查不知道,一查嚇一跳,單個請求執行了1000個sql,平均耗時5ms。
再聯想到代碼里有兩個循環,通過查詢請求數據發現,果然一條MQ里攜帶了1000多條需要更新的數據,1500個就要循環一百多萬次,也難怪服務器會報警。
處理流程:第一時間關閉了當前的MQ,然后將循環更新修改為批量更新,1000條數據更新一次300ms左右,修改完上線重新打開,異常解決。
轉載于:https://www.cnblogs.com/weiBlog/p/10004245.html
總結
以上是生活随笔為你收集整理的生产环境项目问题记录系列(一):一次循环数据库拖垮服务器问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 化石多少钱啊?
- 下一篇: Python:通过一个小案例深入理解IO