MySQL连接数不足导致服务异常GetConnectionTimeoutException

文章目录

  • 场景复现
  • 解决方案
    • 一、调整连接数
    • 二、优化程序


场景复现

已经上线正常运行的项目突然很多功能无法使用,查看程序日志发现MySQL报错,异常信息: Could not open JDBC Connection for transaction; nested exception is com.alibaba.druid.pool.GetConnectionTimeoutException: wait millis 60000, active 0, maxActive 200。根据报错信息来看是由于数据库连接数不足导致的,当新的请求到来,当前有效连接数超过maxActive连接数再获取连接时,就新来的请求就会处于排队状态, 当 排队时间超过maxWait,就会抛出该异常。解决方案有两种,一种是调大MySQL连接数,另一种就是优化程序。


解决方案

一、调整连接数

MySQL常用连接参数介绍 可通过指令 SHOW VARIABLES LIKE '%connect%'; 和 SHOW VARIABLES LIKE '%timeout%';查看以下内容:

参数名默认值介绍
connect_timeout10用于连接超时时间,单位为秒
max_connect_errors100允许单用户连接错误最大值,超过后在不刷新状态的情况下,禁止再次连接
max_user_connections0用户连接最大限制,默认0表示无限制,遵守总连接数小于等于max_connections
max_connections100MySQL支持的最大连接数
innodb_lock_wait_timeout120事务等待获取资源等待的最长时间,超过这个时间还未分配到资源则抛出异常,单位为秒
innodb_rollback_on_timeoutOFF在MySQL 5.6&5.7中默认值为OFF,当InnoDB默认情况下仅回滚事务超时的最后一条语句。如果innodb_rollback_on_timeout值为ON,则事务超时后将导致InnoDB中止并回滚整个事务
slave_net_timeout60slave网络连接超时时间(当数据库使用主从时使用)

当出现连接数不够时,可以通过指令SHOW VARIABLES LIKE '%max_connections%';查看数据库配置的最大连接数。
在这里插入图片描述
如果您的程序并发较高,但是数据连接数较小,可以通过指令调大连接数或者更改数据库的配置文件my.cnfmax_connections参数。通过指令调大连接数:set global max_connections=1000;将连接数调大到1000。如果您的连接数已经设置到了较大的数量,还是出现连接数不够,那么需要排查程序是否有问题,就是下面的优化程序。


二、优化程序

由于我设置的连接数为2000,并且系统的并发也不高。因此可以推测出是程序上的问题。通过指令SHOW FULL PROCESSLIST;查看MySQL服务器上的所有连接,包括连接ID、用户、主机、当前执行的SQL语句等信息。
在这里插入图片描述 参数分析:

参数名介绍
ID用户登录mysql时,系统分配的"connection_id
USER当前用户
HOST执行该SQL是由哪台机器操作的
DB进程目前连接的数据库
COMMAND当前连接的执行的命令,一般取值为休眠(sleep),查询(query),连接(connect)等
TIME状态持续时间,单位为秒
STATE当前连接的sql语句的状态
INFO当前执行的SQL语句,可以作为程序优化的重要条件

找出time时间过长的语句,再查看当前state状态,如果当前stateUpdating或者Sending data,则表示当前正在执行查询或者修改操作,并且执行时间过长。将INFO里的执行SQL信息拿出来,加上Explain进行分析。大概率是因为SQL查询或者修改效率过低,没走索引导致连接一直被占用,最后出现连接数不够的情况。这种情况一般需要我们优化SQL,增加索引即可解决问题。更多关于show processlist文章可以参考show processlist 史上最全参数详解及解决方案


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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

分布式(计算机算法)

目录 分布式计算 分布式​编辑 分布式和集群 分布式和集群的应用场景 分布式应用场景 集群应用场景 哪种技术更优、更快、更好呢 性能 稳定性 以下概念来源于百度百科 分布式计算 分布式计算是近年提出的一种新的计算方式。所谓分布式计算就是在两个或多个软件互相共享信息…

【ArcGISProSDK】添加异步执行时进度窗口

运行结果 代码 protected override async Task InitializeAsync(){using (ProgressorSource progressorSource new ProgressorSource("初始化...")){await QueuedTask.Run(delegate{MessageBox.Show(licenseExpirationDate.ToString());}, progressorSource.Progres…

介绍一下Spring的AOP

一、问题解析 典型回答 AOP(Aspect-Oriented Programming),即面向切面编程,用人话说就是把公共的逻辑抽出来,让开发者可以更专注于业务逻辑开发。 和IOC一样,AOP也指的是一种思想。AOP思想是OOP(Object-Oriented Prog…

【Java刷题篇】滑动窗口

文章目录 📃滑动窗口📜基本概念📜核心思路 ✍最大连续1的个数 III✍水果成篮 📃滑动窗口 📜基本概念 滑动窗口是一种基于双指针的一种思想,两个指针指向的元素之间形成一个窗口。 分类:窗口有…

C++语言现在还有人学吗?

在当今信息爆炸的时代,计算机编程语言繁多,涌现了许多新兴的编程语言,如Python、JavaScript等。针对C编程语言是否还有人学的问题,我个人认为可以从以下几个方面进行讨论。 首先,C诞生于1979年,起初是为了开…

AI预测福彩3D第12弹【2024年3月18日预测--第3套算法重新开始计算第1次测试】

前面的第2套算法感觉效果比较差,与真实结果差距较大,因此,果断放弃第2套算法,再次进行了改进后,咱们从今天开始测试第3套算法。第3套算法加入了012路的权重。废话不多说了,直接上结果吧~ 最终,经…

数据驱动校园管理:山海鲸可视化软件看板搭建记

随着信息化时代的到来,校园管理也逐渐向数字化、可视化转型。作为一名数据分析师,我有幸参与了使用山海鲸可视化软件搭建校园管理可视化看板的项目,山海鲸可视化软件是近些年新崛起的一款可视化产品,支持免费可视化编辑、私有化部…

网络学习:IPV6地址详解

目录 前言: 一、IPV6的由来 二、什么是IPV6地址? IPV6地址结构: 前言: IPV6(Internet Protocol Version 6)是网络层协议的第二代标准协议,也被称为IPng(IP Next Generation&…

SolidWorks教育版 科研版 商业版区别

SolidWorks是一款功能强大的三维CAD软件,广泛应用于机械设计、工业设计、建筑设计等领域。SolidWorks提供了多个版本,以满足不同用户的需求。本文将详细介绍SolidWorks教育版、科研版与商业版的区别,帮助你更好地选择适合自己的版本。 首先&…

sentinel熔断降级

熔断降级 Slot 责任链上的最后一环:熔断降级 DegradeSlot,熔断降级作为保护系统的一种强大手段,可以根据慢调用、异常比例和异常数进行熔断,并自定义持续时间以实现系统保护 规则配置 规则类中属性解析 与控制面板对应 // 其中资源名称在 AbstractRule 里。 pu…

计算机一级word 文字处理理论+实操试题

计算机一级word 文字处理理论实操试题 单选题: 1、在Word编辑状态下,要将另一文档的内容全部添加在当前文档的当前光标处,应选择的操作是依次单击______。 A.“文件”选项卡和“打开”项 B.“文件”选项卡和“新建”项 C.“插入”选项卡…

windows server 下的mysql 8.0.28修改数据库目录

1. 查看当前数据库存储位置 show global variables like %datadir%; 默认是:C:\ProgramData\MySQL\MySQL Server 8.0\Data 2. 修改 C:\ProgramData\MySQL\MySQL Server 8.0\my.ini配置文件。如下: datadirD:/ProgramData/MySQL/MySQL Server 8.0/Dat…

【HyperLips:】数字人——控制嘴唇 项目源码python实现

最近受到商汤“复活”汤晓鸥的视频刺激,大大的amazing!没看过的小伙伴可以自行百度,看了不研究一下【数字人】技术,都要跟时代脱轨了,那就以HyperLips为开篇吧。 目录 🍎🍎1.摘要 &#x1f3…

OgGame——游戏全球发行的全套解决方案

在现今瞬息万变的游戏行业,成功发行一款游戏面临着各方面的难题,例如市场、版号、本土化等等。OgGame以其全球游戏发行的全套解决方案,成为开发者们的首选,为其提供了稳定而全面的支持。 为什么需要游戏全球发行解决方案&#xff…

专访沈劭劼:7千元干出城市NOA,大疆车载如何在「西瓜上雕树林」?

作者 |张祥威 编辑 |德新 在中国乃至全球智驾的供应商中,大疆车载是一家需要被重视的公司,这家公司在「极致性价比」的方向上进展极快。 去年,大疆发布了基于TITDA4 VH的量产方案,在五菱宝骏云朵等车型上进行了量产。一年后&…

C#,数值计算,数据测试用的对称正定矩阵(Symmetric Positive Definite Matrix)的随机生成算法与源代码

C.Hermite 1、对称矩阵 对称矩阵(Symmetric Matrices)是指以主对角线为对称轴,各元素对应相等的矩阵。在线性代数中,对称矩阵是一个方形矩阵,其转置矩阵和自身相等。1855年,埃米特(C.Hermite,1822-1901年)证明了别的数学家发现的一些矩阵类的特征根的特殊性质,如称为埃…

Spark杂谈

文章目录 什么是Spark对比HadoopSpark应用场景Spark数据处理流程什么是RDDSpark架构相关进程入门案例:统计单词数量Spark开启historyServer 什么是Spark Spark是一个用于大规模数据处理的统一计算引擎Spark一个重要的特性就是基于内存计算,从而它的速度…

Jmeter-实战案例(随机上传文件,接口依赖调用)

前置知识 1 两个接口 1-1 readData需要上传文件 参数 // formData类型 sdbh:"" file: "上传一个压缩包"响应 {"code": 1000,"status": "success","message": "操作成功","data":{"n…

es索引操作命令

索引操作 index 创建索引 put 方法创建索引 使用 put 创建索引时必须指明文档id,否则报错 # PUT 创建命令 # test1 索引名称 # type1 类型名称,默认为_doc,已经被废弃 # 1 文档id PUT /test1/type1/1 {"name":"zhangsan&…

第三门课:结构化机器学习项目-机器学习策略

文章目录 1 机器学习策略一1.1 为什么是ML策略?1.2 正交化1.3 单一数字评估指标1.4 满足和优化指标1.5 训练、开发及测试集划分1.6 开发集和测试集的大小1.7 什么时候改变开发、测试集和指标?1.8 为什么是人的表现?1.9 可避免偏差1.10 理解人…