【ERROR】MySQL太多连接数,导致阻塞

15 篇文章 9 订阅
订阅专栏

1、引言:

在当今数字化时代,数据扮演着至关重要的角色。作为企业的数据存储和管理引擎之一,MySQL在众多Web应用和服务中占有重要地位。然而,有时候,即使是最强大的工具也会出现问题。其中一个常见而令人头疼的问题就是"too many connections"错误。

这个错误意味着MySQL服务器无法处理当前正在尝试连接的客户端请求,因为已经达到了最大允许的连接数。在这篇博客文章中,我们将深入探讨这个问题的原因,以及如何解决它,使您的MySQL数据库保持健康运行。

2、理解"too many connections"错误

MySQL默认的最大连接数为100,MySQL服务器允许的最大连接数16384

首先,让我们来了解一下这个错误背后的原因。当MySQL服务器无法为新的客户端连接提供服务时,会触发"too many connections"错误。这可能发生因为以下几个原因:

  1. 达到最大连接数限制:MySQL服务器有一个最大连接数的限制,通常在配置文件中设置(通常是my.cnf或my.ini)。一旦达到这个限制,新的连接请求就会被拒绝。
  2. 长时间不关闭的连接:如果客户端应用程序在使用完连接后不及时关闭连接,会导致连接数堆积。
  3. 连接泄漏:有时应用程序中的bug或者编程错误可能导致连接没有被正确关闭,从而造成连接泄漏。

3、排查步骤

1、查询连接类容,定位大致机器

#登录mysql
 mysql -uroot -p
# 执行命令 
SHOW PROCESSLIST;
| 5148 | root            | kubernetes-node.0101211100.fjf:36334 | fubaoxx     | Sleep   |  561 |                        | NULL             |
| 5201 | root            | kubernetes-node.0101211100.fjf:36936 | fubaoxx     | Sleep   |  541 |                        | NULL             |

每个字段的含义如下:

Id:连接的唯一标识符。
User:连接的用户名。
Host:连接的主机地址和端口号。
db:当前连接的数据库。
Command:当前连接正在执行的命令。
Time:连接的持续时间(以秒为单位)。
State:连接的状态。
Info:当前连接正在执行的查询或操作的详细信息。

在这里插入图片描述
根据这个时间,就可以推定是连接超时的参数为默认值,导致无法快速释放。

2、查询最大连接数

mysql>  show variables like 'max_connections';
+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| max_connections | 5000  |
+-----------------+-------+
1 row in set (0.00 sec)

这台MySQL服务器最大连接数是5000 ,然后查询一下服务器响应的最大连接数:

mysql> show global status like 'Max_used_connections';
+----------------------+-------+
| Variable_name        | Value |
+----------------------+-------+
| Max_used_connections | 918   |
+----------------------+-------+
1 row in set (0.02 sec)

MySQL服务器最大连接数是5000,没有达到服务器连接数上限5000,应该不会出现oo many connections(1040)错误,比较理想的设置是:
Max_used_connections / max_connections * 100% ≈ 85%

最大连接数占上限连接数的85%左右,如果发现比例在10%以下,MySQL服务器连接上限就设置得过高了。

3、修改连接数

1、方法一:修改配置文件。(推荐方法一)

vim /etc/my.conf
max_connections=5000

进入制MySQL安装目录 打开MySQL配置文件 my.ini 或 my.cnf查找 max_connections=100 修改为 max_connections=5000服务里重起MySQL即可。

方法二:命令行修改。(不推荐方法二)

命令行登录MySQL后。
设置新的MySQL最大连接数为200:

MySQL> set global max_connections=500

这种方式有个问题,就是设置的最大连接数只在mysql当前服务进程有效,一旦mysql重启,又会恢复到初始状态。因为mysql启动后的初始化工作是从其配置文件中读取数据的,而这种方式没有对其配置文件做更改。

4、wait_timeout和interactive_timeout 配置

MySQL超时时间是指MySQL与客户端之间的连接时间,超出该时间则会断开连接。默认情况下,MySQL的超时时间是8小时。

wait_timeout参数是指在没有活动连接的情况下,MySQL服务器关闭连接之前等待的秒数。默认时间为8小时,即28800秒。如果你的应用程序有长时间的空闲时间,可以适当地减少该值。

interactive_timeout参数与wait_timeout类似,不同的是它只适用于交互式连接,例如使用命令行或者phpMyAdmin连接MySQL。默认时间也是8小时,即28800秒。同样地,如果你的应用程序有长时间的空闲时间,可以适当地减少该值。

show GLOBAL VARIABLES like '%timeout%';

在这里插入图片描述
通过设置以下两个参数进行配置:

wait_timeout = 600
interactive_timeout = 600

在这里插入图片描述
那么,该如何确定适合你的应用程序的超时时间呢?这需要针对不同的应用程序进行具体分析。如果你的应用程序有很快的响应时间和高流量,可以将超时时间设置为较低的值,比如5分钟。如果你的应用程序有较慢的响应时间和低流量,可以将超时时间设置为较高的值,比如30分钟。

4、总结

  1. 控制连接最大空闲时长的wait_timeout参数。
  2. 对于非交互式连接,类似于jdbc连接,wait_timeout的值继承自服务器端全局变量wait_timeout。
  3. 对于交互式连接,类似于mysql客户单连接,wait_timeout的值继承自服务器端全局变量interactive_timeout。
  4. 判断一个连接的空闲时间,可通过show processlist输出中Sleep状态的时间。
  5. 超时时间只对非活动状态的connection进行计算。 超时时间只以session级别的wait_timeout
    为超时依据,global级别只决定session初始化时的超时默认值。

注意事项
在使用MySQL时,还有一些需要注意的问题:

避免创建过多的连接,这会影响数据库性能。
使用连接池管理连接。
定期检查程序代码中是否正确关闭了数据库连接。

"too many connections"错误可能会对您的MySQL数据库产生严重的影响,但通过理解其原因并采取适当的措施,您可以减轻这个问题的影响,确保您的数据库系统保持稳定和高效运行。

Mysql报错:too many connections
u013938578的博客
02-06 894
(2)max_connections值过小:默认情况下,MySQL的最大连接数是100个,如果这个值过低,则会导致在达到这个限制后,任何新的连接请求都无法得到响应,从而提示“too many connections”的错误。wait_timeout 过大有弊端,其体现就是MySQL里大量的SLEEP进程无法及时释放,拖累系统性能,不过也不能把这个指设置的过小,否则你可能会遭遇到“MySQL has gone away”之类的问题。以上步骤修改后虽然能登录,但仍有隐患,我们应该把那些sleep的连接杀掉。
mysql连接多cpu高_业务高峰期,mysql负载高,连接数过多,导致服务器CPU I/O很大...
weixin_35574537的博客
01-19 1143
首先说下数据库和服务器的配置:操作系统:RedHatEnterpriseLinuxServerrelease5.6cpu核数:8内存:16G数据库版本:5.5.28数据库引擎:Innodb,但是其中有一张很小的表为MyISAM数据库的最大连接数设置的是1024,在业务高峰期的时候,经常会收到告警短信,报告processlist连接数过高,能达到600-800这时本人登上数据库show...
MySQL 连接数过多的处理方法合集 - ERROR 1040 Too many connections - 卡拉云
蒋川@卡拉云
12-06 5155
碰到`ERROR 1040 Can not connect to MySQL server. Too many connections”-mysql`错误着实令人抓狂。 如何查看 MySQL 连接状态? 如何查看当前 MySQL 连接池是否已满? 限制超时时间的方法,缩短 sleep 时间,使系统更快回收连接。 修改配置文件中最大连接数的方法,保证连接畅通。 火线救援法,不用重启,不用登录 MySQL,即可修改最大连接数。 提前布局,给 root 预留好连接通道。
错误!!!Too many connections(连接数过多,导致连接不上数据库,业务无法正常进行)
DLZ的博客
02-28 1万+
Too many connections(连接数过多,导致连接不上数据库,业务无法正常进行一、问题还原二、解决思路三、解决办法 一、问题还原 mysql> show variables like '%max_connection%'; | Variable_name | Value | max_connections | 151 | mysql> set global max_connections=1;Query OK, 0 rows affected (0.00 sec)
mysql连接数分析:MySQL: ERROR 1040: Too many connections
最新发布
qq_27233977的博客
08-29 337
数据库的连接数不是设置的越大越好,这点做过并发的都明白。但是有些机器性能的确非常好,适当开大一下是可以的。
如果MySQL出现 “Too many connections“ 错误,该如何解决?
T_LOYO的博客
07-08 1357
当你想要连接MySQL时出现"Too many connections" 报错的情况下,该如何解决才能如愿以偿呢?
一次生产问题:MySQL连接耗尽和死锁
诗人不写诗
12-29 763
1、线程池要隔离,特别是业务逻辑中异步处理任务较多时,要考虑异步是否需要快速处理完2、表的修改要在需要修改的时候再修改,不要无脑修改,不要怕麻烦多查询一次。
MySQL入门教程:连接池的使用
zqy_zq_zxl的博客
10-07 3317
数据库连接池入门&log日志框架了解
MySQL Aborted connection告警日志的分析
12-14
有时候,连接MySQL的会话经常会异常退出,错误日志里会看到”Got an error reading communication packets”类型的告警。本篇文章我们一起来讨论下该错误可能的原因以及如何来规避。 1.状态变量Aborted_clients和...
springboot默认数据源如何设置连接数_Spring Boot系列之配置数据库连接
weixin_39964899的博客
11-20 5870
在实际的应用开发中,与数据库交互通常使用数据库连接池来重用Connection对象,减少资源消耗。Spring Boot 的数据源是自动配置的。在 Spring Boot 2.2.1 版本中,有几种数据源配置可选,它们按照 HikariCP -> Tomcat -> DBCP2 优先顺序来选择最后实际使用哪个数据库连接池。配置在 Spring Boot 的自动化配置中,对于数...
mysql连接数过多解决方案
dcw93178的博客
08-24 649
mysql 默认链接数是100个最大是16384。 原则:想尽一切办法不重启 导致原因: 出现这种错误明显就是 mysql_connect 之后忘记 mysql_close;当大量的connect之后,就会出现Too many connections的错误,mysql默认的连接为100个,而什么情况下会出现这种错误呢? 正常的mysql_connect 之后调用 mysql...
Too many connections
dsn727455218的博客
03-20 604
在一次启动项目的过程中报了如下一个错误信息: [ERROR] [2019-03-20 13:14:43] com.alibaba.druid.pool.DruidDataSource.init(629) | init datasource error com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Too...
Mysql报错:too many connections原因及解决方法
热门推荐
B001XFX的博客
08-08 2万+
wait_timeout 过大有弊端,其体现就是MySQL里大量的SLEEP进程无法及时释放,拖累系统性能,不过也不能把这个指设置的过小,否则你可能会遭遇到“MySQL has gone away”之类的问题。wait_timeout — 指的是mysql在关闭一个非交互的连接之前所要等待的秒数。如果你没有修改过MySQL的配置,wait_timeout的初始值是28800。5、以上步骤修改后虽然能登录,但仍有隐患,我们应该把那些sleep的连接杀掉。2、查看mysql允许的最大连接数
Mysql:“Too Many Connections”
Demos丶丶
11-12 716
这几天用Mybatis框架遇到一个很“奇怪”的事情。情况是这样的:     线程池核心线程数:3 最大线程数15     Mybatis常连接数:3 最大连接数15 正常来讲,对于mysql数据库,我写的程序最大的连接数量是15个。 但是!重点来了,程序部署到服务器上去并制作脚本启停。启动之后的一段时间内是无异常的,过了。。。嗯,挺长的一段时间 过后,就会报一堆连接错误:“too many...
mysql 解决连接数过多导致连接失败
一个草根敲键盘的故事
02-11 2142
c++ MYSQL是个结构体,可以理解成类。可以创建一个或n个,创建一个就代表一个连接数。如果连接数设置最大1000,那么创建了1千个MYSQL以后就会报错。可以理解为创建了1000个对象,但实际是开发过程中我们用到1000个对象的情况很少,除非现在流行的APP,不过也是要进行缓存设计的。那么我们并发处可以创建几个或几十个就够用了,设计一个对象池,用的时候拿走,用完放回来就可以了。不需要1毫秒创建1000个吧,那是设计有问题。 简单一句话优化代码,减少MYSQL创建次数。 就比如循环内无限制的进行创建,
MySQL 连接数过多的处理方法合集
2301_82242670的博客
04-09 1190
之所以会出现大量sleep占满连接,除了业务量的原因外,也有可以从超时时间着手调整,可根据实际情况适当缩短超时时间,让 MySQL 可在短时间自动清理超时连接,以达到保证连接通常的目的。mysqld默认情况下,两者都是 28800 秒(8 小时),我们可以在 MySQL 配置文件中修改这两个参数。如果你使用的是这种持久连接的话,可以将超时时间降到更合适的值,比如 600 (10 分钟)甚至 60(1 分钟)。这个超时时间并没有一个明确的时间,主要还是要看你的应用场景中的实际需求。首先打开。
数据库连接数过大
Emmien的博客
07-01 1916
mysql连接数过大怎么办
数据库连接数 过多Data source rejected establishment of connection, message from server: “Too ....“
weixin_44503925的博客
09-06 801
出现这个情况说明最大连接数少了 1.首先咱们可以关闭MySQL服务 #linux下使用这个命令 service mysql stop  #win下是这个 net stop mysql  2.启动MySQL #linux下使用这个命令 service mysql start #win下是这个 net start mysql  3.登录mysql mysql -u root -p 输入密码 4.查看当前最大的连接数(执行下面这句话,别忘记 加“;”) show var
MySQL 连接数过多的处理方法合集 - Too many connections
蒋川@卡拉云
10-10 7593
碰到Can not connect to MySQL server. Too many connections”-mysql错误着实令人抓狂。这基本等于失去了对 MySQL 的控制权。本教程将详细讲解多种处理此错误的方法。 sudo mysql -uroot -p ERROR 1040 (00000): Too many connections 本教程将分这几个来讲解 此类错误的原因。 如何查看 MySQL 连接状态。 限制超时时间的方法,缩短 sleep 时间,使系统更快回收连接。 修改配置文件中最.
MySQL服务器优化:慢查询与连接数管理
本文主要介绍了如何利用MySQL的`show global status`和`show variables`命令来监测和优化MySQL服务器的性能,重点讨论了慢查询和连接数这两个关键指标。 一、慢查询优化 慢查询是影响数据库性能的重要因素。通过`...
写文章

分类专栏

  • Ansible 6篇
  • Jenkins 9篇
  • Gitlab 1篇
  • Go语言 8篇
  • Kubernetes 55篇
  • Kubernetes项目实战 23篇
  • Kubernetes应用 18篇
  • Traefik 2篇
  • Docker 29篇
  • Prometheus监控 25篇
  • MySQL 38篇
  • Zabbix监控 9篇
  • Nginx 10篇
  • Python学习 35篇
  • 项目实战 27篇
  • Linux Shell 26篇
  • 企业级-Shell脚本案例 30篇
  • Linux系统入门 1篇
  • Linux实战操作 20篇
  • Linux服务应用 17篇
  • Linux基础 23篇
  • Java 19篇
  • 错误问题解决 15篇
  • 软件 5篇

最新评论

  • Ingress配置优化和追踪

    i520c_and: 添加的初始化容器 init-sysctl 用于在 Ingress Nginx 控制器 Pod 启动之前执行一些系统级参数的优化。这些参数通过 sysctl 命令进行设置,主要用于调整 Linux 内核的网络和文件系统行为,以提高性能和资源利用率。以下是每个参数的详细解释: mount -o remount rw /proc/sys 这个命令重新挂载 proc 文件系统下的 sys 目录为读写模式。因为默认情况下,/proc/sys 是只读的,这个步骤是必要的,以便后续可以修改内核参数。 sysctl -w net.core.somaxconn=65535 net.core.somaxconn 参数定义了 TCP 套接字监听队列的最大长度。增加这个值可以允许更多的连接请求在被服务处理之前排队等待。默认值通常较低,增加它可以提高处理大量并发连接的能力。 sysctl -w net.ipv4.ip_local_port_range="1024 65535" net.ipv4.ip_local_port_range 参数定义了用于向外连接的本地端口范围。默认情况下,这个范围是从 32768 到 60999。将其设置为从 1024 到 65535 可以提供更多的端口供服务使用,这在高负载环境下特别有用。 sysctl -w net.ipv4.tcp_tw_reuse=1 net.ipv4.tcp_tw_reuse 参数允许重用处于 TIME_WAIT 状态的套接字。TIME_WAIT 状态是 TCP 连接关闭过程中的一个阶段,通常持续 60 秒。允许重用这些套接字可以更快地重新使用这些资源,特别是在短连接的应用中。 sysctl -w fs.file-max=1048576 fs.file-max 参数设置了系统可以打开的最大文件数量。增加这个值可以允许系统同时打开更多的文件,这对于高并发的服务来说是一个重要的优化。 sysctl -w fs.inotify.max_user_instances=16384 fs.inotify.max_user_instances 参数设置了每个用户可以创建的 inotify 实例的最大数量。inotify 是 Linux 提供的一种文件系统事件监控机制。增加这个值可以允许更多的并发监控。 sysctl -w fs.inoti

  • zabbix-api查询机器资源利用率,导出execl表格

    宝子们: 有没有方法可以自己设置需要导出的群组的,而不是所有的服务器

  • Confluence升级方案

    Mlxg2234: 我破解之后confluence咋就起不来了

  • Python调用Jumpserver的Api接口增删改查

    实习的骑象人: jms3开始内置Prometheus了?

  • Promethus的Grafana图形显示MySQL监控数据

    南宫乘风: 在Grafan的设置 配置 Prometheus的地址,就可以修改源。

大家在看

  • Springboot车辆充电桩3l3fa(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。 222
  • Python 3.9.0-下载安装教程 保姆级教程
  • 程序员的AI时代,如何用AI来增加副业收入!
  • Vue.js 实现图片上传与管理系统
  • SyncNet(同步网络)音视频同步检查

最新文章

  • Kubernetes部署(haproxy+keepalived)高可用环境和办公网络打通
  • 云原生时代的数据守护者:Velero 备份与迁移实战
  • PowerDNS架构解析与安装部署指南
2024年24篇
2023年34篇
2022年31篇
2021年77篇
2020年90篇
2019年138篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

南宫乘风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

玻璃钢生产厂家天津商场美陈现代简约玻璃钢花盆嘉兴步行街玻璃钢雕塑银川人物玻璃钢雕塑安装商场美陈花钵通许玻璃钢雕塑玻璃钢海产品雕塑门头图片湛江美陈玻璃钢雕塑铜仁毕节玻璃钢雕塑定制河北玻璃钢雕塑订做玻璃钢半圆星球雕塑商丘玻璃钢雕塑厂家电话肇庆玻璃钢动物雕塑产品介绍邯郸玻璃钢雕塑招人玻璃钢花盆浸水开裂动物玻璃钢雕塑供销伊春玻璃钢雕塑价格宿迁玻璃钢雕塑生产厂家安宁玻璃钢雕塑造型厂家哪里有玻璃钢浮雕雕塑哪家有北京玻璃钢金属雕塑设计苏州美陈商场布置哈尔滨玻璃钢卡通雕塑韶关玻璃钢雕塑造型洛阳玻璃钢雕塑公司南充动物玻璃钢雕塑厂家玻璃钢鹿雕塑报价上海超市商场美陈市场价商场美陈購買芜湖多彩玻璃钢雕塑销售厂家香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化