解决Data source rejected establishment of connection, message from server: “Too many connections“的错误

文章目录

  • 1. 复现错误
  • 2. 分析错误
  • 3. 解决问题
  • 4. 补充说明

1. 复现错误


今天在启动项目后,控制台却报出如下错误:

java.sql.SQLNonTransientConnectionException: Data source rejected establishment of connection,  message from server: "Too many connections"at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:110)at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:833)at com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:453)at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:246)at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:198)at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1643)at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1709)at com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:2813)

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

2. 分析错误


正赶上最近ChatGPT比较火,借助他来解决我的错误:

在这里插入图片描述

ChatGPT说这是数据库的连接问题,可能由于连接数过多导致的。

于是,通过如下命令查看连接数:

mysql> show global status like 'Thread%';
+-------------------+-----------+
| Variable_name     | Value 	|
+-------------------+-----------+
| Threads_cached    | 4     	|
| Threads_connected | 1     	|
| Threads_created   | 5     	|
| Threads_running   | 160     	|
+-------------------+-----------+
4 rows in set (0.01 sec)
  1. Threads_cachedMySQL管理的线程池中还有多少可以被复用的资源。

  2. Threads_connected:这个数值指的是打开的连接数。

  3. Threads_created:表示创建过的线程数。

如果发现Threads_created值过大的话,表明MySQL服务器一直在创建线程,这也是比较耗资源。可以适当增加配置文件中的thread_cache_size值,如下代码所示:

mysql> set global thread_cache_size=60;
Query OK, 0 rows affected (0.00 sec)
  1. Threads_running:这个数值指的是激活的连接数,这个数值一般远低于connected数值。

Threads_connectedshow processlist结果相同,表示当前连接数。

如下show processlist;,执行的结果如下图:

mysql> show processlist;
+----+------+-----------------+------+---------+------+----------+------------------+
| Id | User | Host            | db   | Command | Time | State    | Info             |
+----+------+-----------------+------+---------+------+----------+------------------+
| 62 | root | localhost:56520 | NULL | Query   |    0 | starting | show processlist |
+----+------+-----------------+------+---------+------+----------+------------------+
1 row in set (0.00 sec)

Threads_connected的值为1,而show processlist查出1条数据。

因而,Threads_connectedshow processlist结果相同。

准确的来说,Threads_running是代表当前并发数,由上可以看出并发数是160

于是,查询数据库设置的最大连接数,如下代码所示:

mysql> show variables like 'max_connections';
+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| max_connections | 151   |
+-----------------+-------+
1 row in set, 1 warning (0.04 sec)

数据库的并发数是160,而最大连接数是151

由此可见,数据库的并发数超过了最大的连接数。因而,我们需要修改最大连接数。

除了最大连接数,还要查看连接时长,如下代码所示:

mysql> show global variables like 'wait_timeout';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| wait_timeout  | 28800 |
+---------------+-------+
1 row in set, 1 warning (0.00 sec)

连接时长是28800,也就是默认是8小时。

3. 解决问题


我们在修改最大连接数时,同时也要修改连接时长。

  1. 修改最大连接数

因为,数据库的并发数超过了最大的连接数,我们可按如下命令修改最大连接数:

mysql> set GLOBAL max_connections=1000;
Query OK, 0 rows affected (0.04 sec)

重新查询最大连接数,来校验是否设置成功:

mysql> show variables like 'max_connections';
+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| max_connections | 1000  |
+-----------------+-------+
1 row in set, 1 warning (0.01 sec)

此时,便可以Too many connections的问题。

我们除了设置最大连接数(max_connections),同时,也要修改mysql的连接数的时长。

  1. 修改连接时长

我们可以使用如下命令,修改连接时长,自动杀死线程。

mysql> set global wait_timeout=300;
Query OK, 0 rows affected (0.00 sec)

使用如下命令,查看是否修改成功:

mysql> show global variables like 'wait_timeout';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| wait_timeout  | 300   |
+---------------+-------+
1 row in set, 1 warning (0.00 sec)

这种方式只是临时修改,重启mysql会失效。

因而,修改mysql的配置/etc/my.cnf

在这里插入图片描述

修改完毕后,重启mysql5.7即可:

在这里插入图片描述

4. 补充说明


关于show variables like 'xxx'的更多知识,可以参考这篇博文:全网详细介绍MySQL中的show variables like ‘%xxx%’

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

consul注册中心服务All service checks failing及解决

文章目录 consul注册中心服务All service checks failing问题一&#xff1a;能注册&#xff0c;有报错&#xff0c;中间件不可用问题二&#xff1a;能注册&#xff0c;没报错&#xff0c;通不过检查问题三&#xff1a;同一个服务&#xff0c;注册了很多次 consul注册中心服务Al…

(unknown location)问题解决方法

遇到这样的问题&#xff0c;就去在这里插入图片描述 [anaconda文件夹找到sklearn包&#xff0c;卸载&#xff0c;重装一下就OK。

错误 “Avoided redundant navigation to current location...” 的解决方案

当 vue 项目中使用 vue-router 的 编程式导航 写法进行路由切换时&#xff1a; // Search/index.vue <button click"goSearch" v-model"keyword">搜索</button> //按钮绑定事件&#xff0c;切换路由methods: {goSearch() {this.$router.push…

【HMS Core】集成地图服务不显示地图问题

【问题描述】 关于华为HMS-地图服务不显示地图的问题。 背景&#xff1a;集成华为地图服务运行后页面不显示地图&#xff0c;运行app后不展示地图报错MapsInitializer is not initialized。 【解决方案一】 1、先检查一下agconnect-services.json此文件是否放到了主工程模块…

为什么手机有卡却突然显示无服务器,手机突然显示“无服务”,原因是什么?...

原标题&#xff1a;手机突然显示“无服务”&#xff0c;原因是什么&#xff1f; - 问题1 - iPhone插入耳机后没有声音&#xff0c;怎么回事&#xff1f; 有时候插入耳机时&#xff0c;与手机接触不良&#xff0c;导致耳机无法正常接收声音&#xff0c;试下拔掉后&#xff0c;再…

rviz无法显示地图error:no map receive

可能是代码main写错成mian 改后保存再运行即可解决

uni.getLocation和wx.getLocation方法调用无效,也不返回失败,解决方案!!!

线上已解决问题的代码 记录时间 2022.12.10 //获得地理定位信息uni.getLocation({type: wgs84,success: function(resp) {console.log(11111);//保存纬度数据let latitude resp.latitude;//保存经度度数据let longitude resp.longitude;console.log(经度 latitude);console…

mta计算机证书有用么,微软MTA认证有用吗 微软MTA证书含金量高吗

微软MTA认证有用吗&#xff1f;微软MTA证书含金量高吗&#xff1f;如果您还不知道什么是MTA考试&#xff0c;那么&#xff0c;下面我们就一起来认识下&#xff1a;IT专业的第一张国际认证——微软MTA认证。 微软MTA认证是什么&#xff1f; MTA是指Microsoft Technology Associa…

2020届MEM/MBA考研提面准备以及常见问题分享

目录 一、前言 二、开写前的一个小建议 二、提面考察什么 四、提面的流程 五、关于组面 六、英语口语 七、写在最后 一、前言 博主软件开发出身&#xff0c;现在深圳工作&#xff0c;在公司主要负责物联网团队组建、产品、项目、软件开发等工作。2020届MEM备考生&#x…

微软2013校园招聘笔试试题及详细解答

版权所有&#xff0c;转载请注明出处&#xff0c;谢谢&#xff01; http://blog.csdn.net/walkinginthewind/article/details/8770201 &#xff08;不定项选择题&#xff09; 1. Which of the following calling conversion(s) support(s) variable-lengt parameter(e.g. pri…

2023计算机专硕考研冲刺资料分享

各位考研的小伙伴大家好 考研进行到白热化阶段一、考研数学二、考研正治考研英语专业课复习总结 考研进行到白热化阶段 考研到了十月那就是真正的考验自己能力的时候到了 大家在这个时期呢肯定会遇到一些身心上的疲惫&#xff0c;也会感受到对自我的怀疑&#xff0c;但是&…

计算机考研复试专业课常见问题----1

一.英语口语 1.自我介绍------各个学校不同&#xff0c;考察时间有长有短&#xff0c;比如下例。 自我介绍模板网上也有很多&#xff0c;大家自己根据自身情况编写即可 2.英语对话&#xff0c;这个一般就是和老师对话&#xff0c;口语不好可以找同学练习 二.计算机专业课&a…

免费的微软认证考试券又双叒叕来了 Microsoft Build 2022

还记得我说过的宇宙最强学习资源库吗&#xff1f; >Microsoft Learn< Microsoft Build 2022 期间&#xff0c;福利活动又来了&#xff01; 活动页面 点击上方的“活动页面”链接&#xff0c;填写邮箱作为挑战开始时接收通知的方式即可。在挑战开始时&#xff0c;平台…

计算机科学Computer Science留学论文辅导选题推荐

Computer Science计算机科学在英国各个大学都属于热门专业&#xff0c;今天海马课堂(www.highmarktutor.com)给大家带来了计算机科学(Computer Science)论文选题推荐&#xff0c;供有需要的同学们参考。 一、计算机科学论文概述 计算机科学论文按内容性质和研究方法的不同&…

计算机考研复试中可能会被问到的40个问题

文章来源于网络 复试面试的形式是怎样? 专业课一般逐个面试&#xff1a;现场会有一定的评分标准&#xff0c;有些导师手中都会有评分表。大家抽签答题或者从题 库中抽取题目&#xff0c;导师也会随机提问&#xff0c;包括让考生自我介绍、为什么报这个学校/这个专业等等&…

kaptcha谷歌验证码工具

Kaptcha 简介 Kaptcha 是一个可高度配置的实用验证码生成工具&#xff0c;可自由配置的选项如&#xff1a; 验证码的字体验证码字体的大小验证码字体的字体颜色验证码内容的范围(数字&#xff0c;字母&#xff0c;中文汉字&#xff01;)验证码图片的大小&#xff0c;边框&…

一.Duilib开发之基本使用

一. Duilib介绍 Duilib是一款轻量级&#xff0c;遵循BSD协议的开源C GUI框架,可以免费用于商业项目&#xff0c;是由杭州月牙儿网络技术有限公司基于DirectUI界面思想设计出来的GUI开源框架&#xff1b;所谓的DirectUI思想其实指的就是窗口只有一个&#xff0c;而窗体上面的所…

​阿里最新年报:万霖、蒋凡成合伙人;Twitter 网址迁移至 X.com;Cython 3.0 发布|极客头条...

「极客头条」—— 技术人员的新闻圈&#xff01; CSDN 的读者朋友们早上好哇&#xff0c;「极客头条」来啦&#xff0c;快来看今天都有哪些值得我们技术人关注的重要新闻吧。 整理 | 梦依丹 出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09; 一分钟速览新闻点&#…

人工智能、ChatGPT及搜索引擎

搜索引擎通过收集互联网信息以及对这些信息的分析、索引、排序来为用户提供精准的搜索结果。人工智能则是实现和模拟人类智能的科学&#xff0c;包括图像识别、自然语言处理、机器学习等技术。在搜索引擎的应用中&#xff0c;人工智能技术可以被用于提升搜索结果的相关性、精准…

2023年电工杯B题半成品论文使用讲解

注&#xff1a;蓝色字体为说明备注解释字体&#xff0c;不能出现在大家的论文里。黑色字体为论文部分&#xff0c;大家可以根据红色字体的注记进行摘抄。该文件为半成品论文&#xff0c;即引导大家每一步做什么&#xff0c;怎么做&#xff0c;展示按着本团队的解题思路进行建模…