【未限制消息消费导致数据库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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈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或外部组件 开箱即用&…