【未限制消息消費導致數據庫CPU告警問題排查及解決方案】

一、背景

某天下午,上游系統同一時間突然下了三個大合同數據,平均每個合同數據實例在6萬以上的量級,短短幾分鐘內瞬間有20萬左右的流量涌入系統。
而在正常情況下,系統1天處理的流量也不過2千量級,當時數據庫指標監控告警,數據庫會話直線上升,CPU毛刺增多,達到了80%。

二、排查措施

1:數據管家平臺查看慢SQL執行情況,并分析出現慢SQL原因
2:查看消息平臺的業務報錯記錄日志,根據報錯來看,數據庫無法獲取連接,標識當時數據庫的處理能力已經達到上線,無法同時處理這么多會話
3:分析docker運行情況,無大的波動,基于此,定位到影響業務的瓶頸在數據庫

三、整改措施

大批量的信息消費,如果通過升級數據庫規格,增大連接數等手段雖然短時間內可以解決問題,但是增加了機器成本,無法徹底解決問題。
1:控制事務的粒度
在進行事務處理時候,盡量減少事務的范圍,避免長時間占用數據庫連接。可以將多個大的數據庫操作拆分成介個小事務或者無事務,這樣就可以釋放更多的數據連接,提升并發處理能力。評估了核銷這塊邏輯事務影響不大,最終改成無事務操作數據庫。

2:優化代碼結構,減少數據庫交互
優化代碼,優化SQL等手段,比如循環單個處理改成批處理等等。

3:削峰填谷(主要措施)
1)通過設置消息消費配置降低服務消息速度
目前交付單系統服務生產環境部署8臺服務器,每臺機器配置的消費線程是4,從機器運行指標情況來看,docker無壓力,可以分析得出服務消費消息速度過快,數據庫處理能力跟不上。比如我們定義consumer參數為

//拉取批次消息個數,保持不變
setPullBatchSize(32);
//緩存消息個數,指單個queue,默認1個topic對應8個queue,1個消費者最大會緩存8000條,保持不變
setPullThresholdForQueue(1000)
//消費線程最小數,可以降低配置到4
setConsumerThreadMin(8)

2)使用任務Job進行削峰
上游OMS系統瞬時下發的消息,統一先落入集成的數據庫表,落入表之后不立即觸發世間處理,而是由1個ischeduler定時調度任務,按照恒定的速率取固定size數量數據進行撈取進行處理。這樣保證上游無論
瞬時數據多大的并發,我們數據庫都不會因為壓力過大而丟失數據

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/915538.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/915538.shtml
英文地址,請注明出處:http://en.pswp.cn/news/915538.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

iOS開發 Swift 速記2:三種集合類型 Array Set Dictionary

初級代碼游戲的專欄介紹與文章目錄-CSDN博客 我的github:codetoys,所有代碼都將會位于ctfc庫中。已經放入庫中我會指出在庫中的位置。 這些代碼大部分以Linux為目標但部分代碼是純C的,可以在任何平臺上使用。 源碼指引:github源…

Apache基礎配置

一、Apache安裝# 安裝apache [rootwebserver ~]# yum install httpd -y# 在防火墻中放行web服務 [rootwebserver ~]# firewall-cmd --permanent --add-servicehttp success [rootwebserver ~]# firewall-cmd --permanent --add-servicehttps success# 開啟服務 [rootwebserver …

Python100個庫分享第37個—BeautifulSoup(爬蟲篇)

目錄專欄導讀📚 庫簡介🎯 主要特點🛠? 安裝方法🚀 快速入門基本使用流程解析器選擇🔍 核心功能詳解1. 基本查找方法find() 和 find_all()CSS選擇器2. 屬性操作3. 文本提取🕷? 實戰爬蟲案例案例1&#xff…

石子入水波紋效果:頂點擾動著色器實現

水面波紋的真實模擬是計算機圖形學中一個經典且重要的課題,廣泛應用于游戲、影視和虛擬現實等領域。本文將從技術原理和實現細節出發,系統介紹如何利用**頂點擾動(Vertex Displacement)**技術,結合多種輔助方法,打造既真實又高效的水面波紋效果。 一、頂點擾動的核心思想…

【FFmpeg 快速入門】本地播放器 項目

目錄 🌈前言🌈 📁 整體架構 詳細流程 📁 數據流向? 📁 隊列設計?編輯 📁 線程設計 📁 音視頻同步 📁 音頻輸出設計 📁 視頻輸出設計 📁 總結 …

Maven dependencyManagement標簽 properties標簽

dependencyManagement標簽properties標簽

前端埋坑之element Ui 組件el-progress display:flex后不顯示進度條解決方案

項目適用場景&#xff1a; <divs style"display&#xff1a;flex"> <span>這里是進度條前標題說明</span> <el-progress :percentage"50"></el-progress> </div> 問題呈現&#xff1a; el-progress進度條沒啦&#xf…

嵌入式學習-土堆PyTorch(7)-day23

損失函數的調用import torch from torch import nn from torch.nn import L1Lossinputs torch.tensor([1.0,2.0,3.0]) target torch.tensor([1.0,2.0,5.0])inputs torch.reshape(inputs, (1, 1, 1, 3)) target torch.reshape(target, (1, 1, 1, 3)) #損失函數 loss L1Loss…

【2025最新】使用neo4j實現GraphRAG所需的向量檢索

學習筆記&#xff0c;比較混亂&#xff0c;介意慎點。 背景 在將UMLS或者LightRAG構造的數據庫存入neo4j之后&#xff0c;我開始將知識圖譜運用到實際場景的使用中、例如查詢、推理。然而&#xff0c;由于字符串匹配導致大量術語在檢索時出現缺失。導致檢索效果不佳。我們需要…

【AI深究】隨機森林(Random Forest)全網最詳細全流程詳解與案例(附Python代碼演示)|集成學習|數學原理、案例流程、代碼演示及結果解讀|參數與調優、工程啟示、單棵決策樹的對比、優缺點

大家好&#xff0c;我是愛醬。本篇將會系統地講解隨機森林&#xff08;Random Forest&#xff09;的原理、核心思想、數學表達、算法流程、代碼實現與工程應用。內容適合初學者和進階讀者&#xff0c;配合公式和可視化示例。 注&#xff1a;本文章含大量數學算式、詳細例子說明…

6.String、StringBuffer、StringBuilder區別及使用場景

String固定長度&#xff0c;引用的字符串內容無法改變例如&#xff0c;String s abc;s def;那么 s 字符串對應的地址已經改變了StringBuider 聲明一個對象時&#xff0c;指向堆中的一塊空間&#xff0c;包括兩個屬性 value 和 count其中 value 屬性類似動態數組&#xff0c;可…

Qualcomm Linux 藍牙指南學習--驗證 Fluoride 協議棧的功能(2)

前言 Qualcomm Technologies推出的Linux藍牙指南詳細介紹了基于Qualcomm RB3 Gen 2和IQ-9100 Beta開發套件的藍牙解決方案。該文檔涵蓋BlueZ和Fluoride協議棧的功能驗證流程,支持藍牙5.2核心規范,包括WCN6750/WCN6856/QCA6698AQ芯片組的特性。主要內容分為三部分: ?1. 功…

Spring Boot中REST與gRPC并存架構設計與性能優化實踐指南

Spring Boot中REST與gRPC并存架構設計與性能優化實踐指南 在微服務架構日益復雜的當下&#xff0c;單一協議往往難以滿足高并發低延遲與生態兼容的雙重需求。本文基于真實生產環境的項目經驗&#xff0c;分享了如何在Spring Boot中同時提供RESTful API和gRPC接口的架構設計、性…

Simulink仿真-model Setting關鍵配置

1.概述 Simulink 的仿真設置&#xff08;Model Settings&#xff09;是確保仿真準確性的關鍵配置&#xff0c;主要包括仿真時間、步長、解法器選擇等核心參數的設定。 ?可以通過快捷鍵?CtrlE?打開仿真設置界面2.核心參數 2.1 求解器Solver配置 時間范圍&#xff1a;設置仿真…

內網與外網是通過什么進行傳輸的?內外網文件傳輸的安全方法

在當前企業信息化建設日益深入的背景下&#xff0c;出于安全防護與合規管理的需要&#xff0c;很多單位將網絡劃分為內網&#xff08;辦公網/生產網&#xff09;與外網&#xff08;互聯網/DMZ區&#xff09;。這種網絡隔離策略雖然提升了安全性&#xff0c;但也帶來了內外網文件…

RabbitMQ面試精講 Day 4:Queue屬性與消息特性

【RabbitMQ面試精講 Day 4】Queue屬性與消息特性 開篇 歡迎來到"RabbitMQ面試精講"系列的第4天&#xff01;今天我們將深入探討RabbitMQ中Queue的屬性配置與消息特性&#xff0c;這是理解和優化RabbitMQ使用的關鍵知識點。掌握這些內容不僅能幫助你在面試中展現深厚…

uniapp vue3 vite項目使用微信云開發(云函數)

1、在根目錄新建文件夾 cloudfunctions2、配置 manifest.json在項目根目錄的 manifest.json 文件中&#xff0c;找到微信小程序配置部分&#xff0c;添加 cloudfunctionRoot 字段&#xff0c;指向你的云函數目錄&#xff1a;{"mp-weixin": {"cloudfunctionRoot&…

AK視頻下載工具:免費高效,多平臺支持

近期小編又發現了一款更強大的新神器——AK視頻下載&#xff08;電腦版&#xff09;&#xff0c;一起來了解下吧~ 軟件亮點 完全免費&#xff0c;無需安裝&#xff0c;操作便捷&#xff0c;直接打開即可使用。 支持多平臺視頻下載&#xff0c;包括抖音、B站、小紅書、快手等主…

7月21日星期一今日早報簡報微語報早讀

7月21日星期一&#xff0c;農歷六月廿七&#xff0c;早報#微語早讀。1、廣東佛山累計報告基孔肯雅熱確診病例1873例&#xff0c;均為輕癥&#xff1b;2、祝賀&#xff01;石宇奇奪得日本羽毛球公開賽男單冠軍&#xff1b;3、中國和匈牙利順利完成引渡條約談判&#xff1b;4、科…

基于Milvus Lite的輕量級向量數據庫實戰指南

一、為什么選擇Milvus Lite&#xff1f; 在人工智能和語義搜索應用中&#xff0c;高效的向量檢索是核心需求。相比需要部署Docker的完整版Milvus&#xff0c;Milvus Lite提供&#xff1a; 零依賴&#xff1a;純Python實現&#xff0c;無需安裝Docker或外部組件 開箱即用&…