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

news2024/11/18 4:23:01

文章目录

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


场景复现

已经上线正常运行的项目突然很多功能无法使用,查看程序日志发现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 史上最全参数详解及解决方案


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

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

相关文章

常见的十大网络安全攻击类型

常见的十大网络安全攻击类型 网络攻击是一种针对我们日常使用的计算机或信息系统的行为,其目的是篡改、破坏我们的数据,甚至直接窃取,或者利用我们的网络进行不法行为。你可能已经注意到,随着我们生活中越来越多的业务进行数字化&…

内衣洗衣机排行榜测评:RUUFFY、希亦、小吉三款全面性能对比

在内衣洗衣机越来越受欢迎的今天,不少朋友都在犹豫要不要买一台内衣洗衣机,专门来清洗一些自身的贴身衣物,这个问题的答案是很有必要的,因为目前市场上的大型洗衣机只是起到了清洁的作用,并不能有效地清洁干净我们的贴…

ssh连接报错:REMOTE HOST IDENTIFICATION HAS CHANGED问题解决

ssh之前连接没有问题,远程主机发生修改后,重新连接,出现如下报错:WARNING:REMOTE HOST IDENTIFICATION HAS CHANGED! 问题原因: ssh-keygen是用于为SSH创建新的身份验证密钥对的工具。此类密钥对用于自动登录&#xf…

如何监听抖音、快手、哔哩哔哩弹幕实现弹幕游戏制作?直播互动助手开放 API 帮你快速构建详细教程

弹幕直播概述 如何监听抖音、快手、哔哩哔哩弹幕实现弹幕游戏制作?随着中短视频平台直播热度的攀升,基于弹幕监听的直播模式也逐渐让大家熟知。如何去进行弹幕直播,去实现基于弹幕和礼物的直播新模式。边缘骇客直播互动助手是一款兼容大部分…

学会用AI写文案,一分钟就能做一条爆款短视频:方法简单可复制

在这个信息爆炸的时代,短视频已成为人们获取信息、娱乐和社交的重要方式。而一条爆款短视频,除了精彩的画面和音乐外,文案的作用也不容忽视。 学会用AI写短视频文案,能够让你在竞争激烈的市场中脱颖而出,快速吸引观众的注意力。本文将为你揭示如何利用AI快速写出爆款短视…

sentinel基本流控

基本流控 规则配置 这里和控制台显示的属性一一对应 /*** 规则id、资源名、针对来源 这三个字段在父类 AbstractRule 里*/ public class FlowRule extends AbstractRule {// 阈值类型:1 代表 QPS;0 代表 并发线程数private int grade RuleConstant.F…

AI检测识别技术,为智能化视频生产赋能

在科技飞速发展的今天,智能化生产已经成为企业提高效率、降低成本、增强竞争力的关键所在。美摄科技,作为一家在音视频处理技术领域保持领先的创新型企业,不仅致力于提供卓越的音视频处理技术,更在AI检测识别领域积累了深厚的实力…

LayerNormalization 和 RMSNormalization的计算方法和区别

目录 问题来源 Layer Normalization 与 RMSNormalization 的详细计算方法 Layer Normalization(层归一化) RMSNormalization(均方根归一化) Layer Normalization与RMSNormalization的异同 Layer Normalization RMSNormaliza…

【WEEK3】 【DAY4】JSON交互处理第三部分【中文版】

2024.3.14 Thursday 接上文【WEEK3】 【DAY3】JSON交互处理第二部分【中文版】 目录 6.7.编写抽象类6.7.1.原因6.7.2.新建JsonUtils.java6.7.3.在UserController添加一个方法json6验证抽象类可调用6.7.4.在UserController添加一个方法json7验证该抽象类可复用6.7.5.运行 6.8.…

Zinx框架的高级用法

一、使用框架提供的实用类 zinx框架已经提供了常用的IO通道类-TCP。 阅读Tcp相关类的使用文档,将之前的3个案例用TCP的方式实现。 步骤: 创建Tcp数据通道类继承ZinxTcpData,重写GetInputNextStage函数,内容跟之前标准输入通道类…

你真的懂Linux线程和信号的关系吗?

前言: 讲到信号,我们更多的是站在进程的角度去理解信号,当一个进程有多个线程的时候,那么进程,线程,信号三者之间会是什么样的关系呢? 1.线程与信号的关系 线程与信号关系要遵循以下标准&…

【Node.js从基础到高级运用】十四、Node.js 错误处理与日志记录

引言 在这篇博客文章中,我们将深入探讨Node.js中的错误处理和日志记录的最佳实践。我们会了解如何在Node.js应用程序中有效地捕获和处理错误,并利用日志库如morgan来记录应用程序的活动和错误信息。 第1部分:Node.js中的错误处理 同步代码中…

Aigtek电压放大器的作用及优点是什么

电压放大器是电子技术领域中重要的设备,其作用是将输入信号的电压放大到所需的输出电压水平。电压放大器具有多种优点,下面安泰电子将详细介绍其作用及主要优点。 电压放大器的主要作用是增加信号的电压幅值。通过放大信号的电压,可以增强信号…

苹果MacOS电脑使用内网穿透轻松远程桌面本地Windows系统电脑

文章目录 1. 测试本地局域网内远程控制1.1 Windows打开远程桌面1.2 局域网远程控制windows 2. 测试Mac公网远程控制windows2.1 在windows电脑上安装cpolar2.2 Mac公网远程windows 3. 配置公网固定TCP地址 日常工作生活中,有时候会涉及到不同设备不同操作系统之间需要…

Soul打造多元社交元宇宙,满足年轻人多样化的设计需求

近年来,元宇宙概念备受瞩目,成为全球关注的热门话题。其中,Soul App凭借其独特的Gamified游戏化社交理念,早早成为了元宇宙的开拓者之一。通过持续布局元宇宙赛道,加大技术创新力度,以及创新平台玩法和场景,Soul为用户打造了一个真实、温暖、多元的社交元宇宙,深受Z世代用户的喜…

Python脚本:用py处理PDF的五大功能

一、代码 【第三方库】3个 【Py版本】3.9 【使用前提】关闭所有的word文档 import os from datetime import datetime from docx2pdf import convert from pdf2docx import parse from PyPDF2 import PdfMerger from PyPDF2 import PdfReader,PdfWriter#将文件夹中的所有Wo…

Python从COCO数据集中抽取某类别的数据

1、问题描述 今天需要训练一个人工智能检测模型,用于检测图片或视频中的人。自行收集训练数据费时费力,因而选择从公开数据集COCO中进行抽取。 2、数据准备 2.1 下载 COCO2017 数据集 train:http://images.cocodataset.org/zips/train2017.zip valid…

杉德支付配合调查 - 数字藏品服务

最近,数字收藏品平台淘派发布了一则公告,宣布支付通道杉德已暂停接口服务,以配合调查。 近期发现多个异常账户,涉嫌盗取他人信息和银行卡,利用平台从事非法交易。淘派已第一时间报警,协助警方追回资金(回执…

学生能力是如何被封印的

为了避免无法发表,需要借助人工智能。 为什么一直没写 这个主题其实很多年前就明晰了,但是没有勇气去写出来。 责任全在人工智能 如下是人工智能的回复,如有责任,全都是人工智能的责任。 在学生的情境中,“能力被封印…

Kigo Netflix Video Downloader:Mac与Windows用户的视频下载利器

随着网络的发展和普及,越来越多的人开始使用在线流媒体服务来观看电影、电视剧和其他视频内容。其中,Netflix是世界上最受欢迎的流媒体平台之一。然而,对于想要离线观看这些视频内容的用户来说,下载它们可能会变得有些困难。幸运的…