【MySQL系列】Too many connections
作者:mmseoamin日期:2024-01-18

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

【MySQL系列】Too many connections,img,第1张

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

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

博客目录

    • 问题描述
    • 报错信息
    • 错误原因
    • 解决方案
      • 查看 MySQL 版本
      • 查看当前 MySQL 最大连接数限制
      • 确定连接数不够原因
      • 修改最大连接数
      • 命令设置
      • 修改 my.cnf 文件

        问题描述

        解决 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

          【MySQL系列】Too many connections,image-20240109100219341,第2张

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

          show variables like 'max_connections';
          

          【MySQL系列】Too many connections,image-20240109100248972,第3张

          当前最大连接数限制是 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 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙

          【MySQL系列】Too many connections,img,第4张