【MySQL系列】Too many connections

2024-01-09 12:16:37

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。
img

  • 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老
  • 导航
    • 檀越剑指大厂系列:全面总结 java 核心技术点,如集合,jvm,并发编程 redis,kafka,Spring,微服务,Netty 等
    • 常用开发工具系列:罗列常用的开发工具,如 IDEA,Mac,Alfred,electerm,Git,typora,apifox 等
    • 数据库系列:详细总结了常用数据库 mysql 技术点,以及工作中遇到的 mysql 问题等
    • 懒人运维系列:总结好用的命令,解放双手不香吗?能用一个命令完成绝不用两个操作
    • 数据结构与算法系列:总结数据结构和算法,不同类型针对性训练,提升编程思维,剑指大厂

非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。💝💝💝 ?? 欢迎订阅本专栏 ??

问题描述

解决 MySQL 报错:

Data source rejected establishment of connection, message from server: "Too many connectio_MySQL

在做项目时,创建多个数据库进行连接,这个报错也很容易理解,MySQL 连接数不够用了

这个错误消息涉及到数据库连接方面的问题,具体来说是关于连接数的限制。

  1. SQLState:“08004”:这是一个标准的 SQL 状态码,通常表示连接错误或数据库不可用。

  2. vendorCode:1040:这是特定于数据库供应商的错误代码,这里是 MySQL 数据库的错误代码。在 MySQL 中,错误代码 1040 表示连接数过多的问题。

  3. detailMessage:这是详细的错误信息,指出了具体的问题。在这种情况下,服务器返回的消息是:“Data source rejected establishment of connection, message from server: “Too many connections””,翻译过来就是"数据源拒绝建立连接,服务器消息:连接太多"。

这个错误发生在尝试建立数据库连接时,但由于连接数已经达到了数据库服务器的限制,所以连接被拒绝。这可能是因为数据库服务器同时处理了太多的连接请求,或者系统配置设置了连接数的上限。解决方法通常包括增加数据库服务器的最大连接数配置,优化数据库连接的使用,或者调整应用程序的连接管理策略。

报错信息

报错信息如下:

“SQLState”:“08004”,“vendorCode”:1040,“detailMessage”:
“Data source rejected establishment of connection,message from server: “Too many connections””

错误原因

根本原因是 MySQL 连接数不够用了

但也要分情况看为什么不够用了

1. 是 MySQL 的 max_connections 属性配置太小?

2. 还是是多次 insert,update 操作没有关闭 session?

解决方案

我们要知道,MySQL 版本的不同,可设置的最大连接数范围也是有所区别的:

  • MySQL5.5 ~ 5.7:默认的最大连接数都是 151,上限为:100000
  • MySQL5.0 版本:默认的最大连接数为 100,上限为 16384
  • MySQL8.0 版本: 默认的最大连接数是 151

查看 MySQL 版本

SELECT VERSION() ;

如下,我这里是基于 MySQL 8.0.35,那么默认的最大连接数应该是 151

image-20240109100219341

查看当前 MySQL 最大连接数限制

show variables like 'max_connections';

image-20240109100248972

当前最大连接数限制是 151,显示 1500,是因为我修改过了

确定连接数不够原因

如上所示,我的情况当前是最大连接数限制是 151,在此之前依然创建过十几个数据库;同时我又再次自行检查过,我这里不存在未关闭 session 的操作,所以原因是 max_connections 属性配置太小

修改最大连接数

修改 MySQL 客户端最大连接数可以通过两种方式:

一种是使用命令设置,另一种是直接修改 my.cnf 文件

命令设置

使用命令设置这种方式是临时修改,只能治标不能治本,在这个 MySQL 服务不重启的条件下是可用的,若 MySQL 重启会恢复到 MySQL 默认的连接数(或者恢复到 my.cnf 文件中配置的最大连接数)。

但由于我是在测试,无所谓,MySQL 重启后的连接数

set global max_connections=1500;

修改 my.cnf 文件

MySQL 重启后会优先使用 my.cnf 配置文件中的配置,用上面命令设置后,若重启 MySQL 服务,则还是会回到 my.cnf 文件中配置的最大连接数(或者默认值)。

# 修改my.cnf文件,在文件中加入如下属性
max_connections=1500

# 然后重启mysql服务
$ service mysqld restart

再次去创建数据库连接,就没问题了!

觉得有用的话点个赞 👍🏻 呗。
??????本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄

💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍

🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙

img

文章来源:https://blog.csdn.net/qyj19920704/article/details/135474334
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。