一次Mysql数据库活跃连接数高告警的排查方法

news2024/11/27 2:21:45

基础相关知识

在现代应用中,数据库的性能和稳定性直接影响到整个系统的运行情况。活跃连接数高的告警往往意味着数据库负载过重,可能会导致性能下降甚至服务不可用。

活跃连接数指的是当前与数据库建立连接并且处于活动状态的连接数量

高活跃连接数可能由以下原因引起:

  • 应用程序连接池配置不当
  • 数据库查询效率低下
  • 未释放的连接或连接泄漏
  • 短时间内的并发请求激增

背景

Apollo 是一个开源的分布式配置管理系统,由携程开发并维护。它旨在为微服务架构提供灵活、可管理的配置解决方案,支持动态配置更新、版本控制和多环境管理。存储方面主要是依赖于mysql数据库。在系统运行了一段时间后,某天出现了DBA同事发过来的“活跃连接数”高的告警。随着活跃连接数高的问题触发,发现此时整个DB系统的处理能力都会直线下降,sql执行耗时大大增加。

排查思路

1、由于Apollo最近一段时间系统都没发生过迭代升级,看应用层面的监控数据也没有明显看出指标异常,故怀疑是DB层面可能出现的性能问题。

2、查看DB的监控报表,发现CURD的指标也没有异常的波峰波谷。发现的情况主要表现为:

a、活跃连接数偶尔飙高,但是持续的时间不长,大概几秒就处理OK

b、mysql cpu使用率飙高

c、DB机器的io偶尔飙高

d、获取行锁的次数和时间都多

3、和DBA同事一起排查,DBA同事认为目前ioutil的值在可控范围内,看DB机器的负载也不高,DB机器近期都没变动过,初步排除是数据库层面引起导致的问题。初步怀疑是update引起的并发高导致的问题,因为系统中有个update的探活请求,大概qps为200左右。由于这条SQL update的key是同一个,所以这里存在可疑性,就是产生并发锁的问题。但这也很难解释为啥跑了那么久才会出现这个问题,因为最近一直qps都是一样的,所以这个理由也不够让人信服。。。

4、故不是DB层面的问题,那极大概率还是程序层面导致出现的性能问题。排查程序,发现在内部的一个定期60秒更新配置的一个逻辑里面,存在一个扫描全表加载数据到内存中的逻辑。此时快速想到,极大可能是这个表的数据量增长了,导致扫描查询次数增多,最终导致瞬时QPS高导致活跃连接数飙高的原因。查询数据库,发现表的数据量确实涨了2倍。

5、修正表的无效数据表的数据量降下来后,观察grafana报表,活跃连接数再也没出现飙高现象,mysql的cpu使用率也降下来了,问题最终解决了。

总结

此次导致数据库出现活跃连接数高的原因,是瞬时的查询qps变高,由于查询的数据量多,继而导致mysql cpu使用率高,io也将面临压力,可能出现ioutil高的问题。这个问题排查的难点是,一开始不确定到底是数据库层面的问题导致的应用程序慢,还是应用程序慢导致的DB出现的性能瓶颈。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2192831.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

阿里云百炼通义大模型接入流程,手把手教程

阿里云百炼通义大模型接入流程,即体验大模型、创建Agent应用和创建自训练大模型,阿里云百科aliyunbaike.com分享阿里云官网关于阿里云百炼通义大模型的接入流程: 阿里云百炼通义大模型接入流程 快速接入阿里云百炼通义大模型共分为三大步骤&a…

大模型客服的未来发展趋势

在当今数字化时代,大模型客服正以惊人的速度改变着客户服务的格局。随着技术的不断进步,大模型客服的未来发展趋势充满了无限可能。随着人工智能技术的快速发展,智能客服领域正迎来一场前所未有的变革。大模型客服作为其中的重要分支&#xf…

为什么营业执照显示经营异常

经营异常是怎么回事?是什么意思?1、年报未依照正常的时间公示或者某些要素没有公示;2、营业执照的地址与实际的地址不符,该地址联络不到人。经营异常不处理有什么后果?有什么影响?企业被列入工商异常一般会对公司的经营…

Maven的生命周期与依赖作用域介绍

说明:本文介绍Maven的生命周期,以及在pom.xml文件中每个依赖(dependency标签内)scope标签的内容。 Maven生命周期 在IDEA项目中,右侧边栏,点Maven,可以看到以下生命周期。 其中, c…

【AI知识点】偏差-方差权衡(Bias-Variance Tradeoff)

偏差-方差权衡(Bias-Variance Tradeoff) 是机器学习和统计学中的一个核心概念,描述了模型在训练数据和测试数据上的表现与模型复杂度之间的关系。它解释了为什么我们需要在模型复杂度和模型泛化能力之间做权衡,以避免模型出现欠拟…

数字化转型:企业竞争力提升的关键

在当今时代,数字化转型已成为企业发展的必然趋势。它不仅仅是技术的应用,更是一种战略思维的转变。 数字化转型的主要内容 1.业务流程数字化:通过引入信息技术,实现业务流程的自动化、智能化,提高业务流程的效率和准确…

科普篇 --- 什么是汽车中的API?

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不…

第四节——从深层剖析指针(让你不再害怕指针)

文章目录 1. 字符指针变量剑指offer例题 2. 数组指针变量2.1 数组指针变量是什么?2.2 数组指针变量怎么初始化 3. ⼆维数组传参的本质代码实现 4. 函数指针变量4.1 函数指针变量的创建4.3 两段有趣的代码4.3.1 typedef 关键字 5. 函数指针数组的定义 1. 字符指针变量…

Stable Diffusion绘画 | AI 图片智能扩充,超越PS扩图的AI扩图功能(附安装包)

来到「文生图」页面,输入固定的起手式提示词。 第1步,开启 ControlNet,将需要扩充的图片加载进来: 控制类型选择「Inpaint」,预处理器选择「inpaint_onlylama」,缩放模式选择「缩放后填充空白」&#xff1…

【C++差分数组】3224. 使差值相等的最少数组改动次数|1996

本文涉及知识点 C差分数组 LeetCode3224. 使差值相等的最少数组改动次数 给你一个长度为 n 的整数数组 nums ,n 是 偶数 ,同时给你一个整数 k 。 你可以对数组进行一些操作。每次操作中,你可以将数组中 任一 元素替换为 0 到 k 之间的 任一…

【目标检测】集装箱缺陷检测数据集1476张5类缺陷VOC+YOLO格式

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):1476 标注数量(xml文件个数):1476 标注数量(txt文件个数):1476 标注…

什么是高斯积分,以及如何求它的值(error function)

文章目录 什么是高斯积分高斯积分与误差函数的关系求值证明过程技巧1 两个相互独立的积分的乘积转为双重积分技巧2 富比尼定理技巧3 坐标系转换总结 什么是高斯积分 高斯积分的公式如下: 高斯积分与误差函数的关系 参考wiki,误差函数的定义如下&…

Ajax和axios简单用法

Ajax Ajax(Asynchronous JavaScript And XML,异步的JavaScript和XML)。 作用是: 数据交换:通过Ajax可以给服务器发送请求,并获取服务器响应的数据。异步交互:可以在不重新加载整个页面的情况…

【汇编语言】寄存器(CPU工作原理)(一)—— 寄存器的基础知识及存储

文章目录 前言1. 寄存器2. 通用寄存器3. 字在寄存器中的存储结语 前言 📌 汇编语言是很多相关课程(如数据结构、操作系统、微机原理)的重要基础。但仅仅从课程的角度出发就太片面了,其实学习汇编语言可以深入理解计算机底层工作原…

1、如何查看电脑已经连接上的wifi的密码?

在电脑桌面右下角的如下位置:双击打开查看当前连接上的wifi的名字:ZTE-kfdGYX-5G 按一下键盘上的win R 键, 输入【cmd】 然后,按一下【回车】。 输入netsh wlan show profile ”wifi名称” keyclear : 输入完成后,按一下回车&…

初阶C语言-指针

1.指针是什么? 理解指针的两个要点: 1.指针是内存中一个最小单元的编号,也就是地址 2.口头语中说的指针,通常是指指针变量,是用来存放内存地址的变量 总结:指针就是地址,口语中说的指针通常是指…

详解单流Transformer架构中图像/文本/表格/视频/音频经过transformer提取模态特征并生成令牌特征以及CLS到底是什么作用?

系列论文研读目录 文章目录 系列论文研读目录论文中经常出现的如下图中所示结果,其中到底做了什么?1、一张图片 经过self attention 和Feed forward 生成的是什么?具体流程如下:结果: 举个具体计算的例子假设条件1. 自…

【hot100-java】【最长递增子序列】

dp篇 一眼单调栈 之前写的python题解 佬解 单调栈二分查找 我靠&#xff0c;大师我悟了 class Solution {public int lengthOfLIS(int[] nums) {if (nums.length<1){return 1;}List<Integer>stacknew ArrayList<>();stack.add(nums[0]);for(int i1;i<num…

吊打ChatGPT4o!大学生如何用上原版O1辅助论文写作(附论文教程)

目录 1、用ChatGPT生成论文选题2、用ChatGPT生成论文框架3、用ChatGPT进行文献整理4、用ChatGPT进行论文润色5、用ChatGPT进行问题求解6、用ChatGPT进行思路创新7、用ChatGPT进行论文翻译8、如何直接使用ChatGPT4o、o1、OpenAI Canvas 9、OpenAI Canvas增强了啥&#xff1f;10、…

Python中字符串的基本操作

文章目录 1、字符串序号2、字符串切片3、字符串切割4、字符串替换5、字符串删除6、字符串判断7、字符串拼接8、其他操作 字符串是 python 中常用的数据类型&#xff0c;python中可以使用单引号或双引号来创建字符串&#xff0c;python 中没有字符类型&#xff0c;字符在 python…