theme: nico
你们好,我是金金金。

场景

- 启动服务时,报错如上:数据源拒绝建立连接,服务器发送消息:“连接过多”
排查
看报错信息提示的很明显了
- 查看MySQL 数据库中最大允许连接数的配置信息(我mysql是部署在docker容器的,所以如下命令需要进入mysql容器内并且登录mysql之后执行)
docker exec -it mysql bash   # 进入mysql容器
mysql -u root -p  # 登录mysql
SHOW variables LIKE "%max_connections%";    # 查看最大连接数信息

- max_connections:MySQL数据库服务器的参数,指定了服务器可以同时接受的最大客户端连接数量。如果尝试建立的新连接超过这个限制,服务器将拒绝连接请求。这个参数的默认值通常是150。
- mysqlx_max_connections:这是MySQL数据库服务器的参数,用于控制通过MySQL X协议(用于MySQL的新的高级协议)连接到服务器的最大连接数。MySQL X协议提供了更现代和强大的功能,比如支持异步查询和事务。mysqlx_max_connections指定了服务器可以同时接受的最大MySQL X连接数。如果尝试建立的新连接超过这个限制,服务器将拒绝连接请求。这个参数的默认值通常是100。
- 查询当前数据库服务器已连接的线程数量
SHOW STATUS LIKE 'Threads_connected';

- 很明显,已经超过100了,所以数据源拒绝建立连接
造成error的原因
- 数据库连接过多
解决
有多种解决方案。
-  重启 mysql服务- 重启 MySQL 服务会导致所有现有的数据库连接被关闭。当 MySQL 服务器重启时,它会结束所有当前的进程,并清除 SHOW PROCESSLIST;命令显示的所有线程信息。这意味着所有处于 “Sleep” 状态的线程、正在执行查询的线程,以及其他所有类型的数据库连接都会被终止
 
- 重启 MySQL 服务会导致所有现有的数据库连接被关闭。当 MySQL 服务器重启时,它会结束所有当前的进程,并清除 
-  修改最大连接数(docker中修改mysql最大连接数及配置文件,因为我mysql是部署在docker容器的) 
 2.1 临时修改:重启mysql后就不生效- docker exec -it mysql /bin/bash
- mysql -u root -p root
- SET GLOBAL max_connections = 200;
 2.2 永久修改:重启 mysql后也生效- 要永久修改 max_connections的值,需要编辑MySQL的配置文件(通常是my.cnf或my.ini,根据你的操作系统和MySQL安装方式而异)
 找到MySQL的配置文件。这个文件通常位于以下位置之一: - 在Unix/Linux系统上:/etc/my.cnf,/etc/mysql/my.cnf, 或~/.my.cnf- 我这里mysql是在docker容器下的,所以在容器目录内
 
 

-   在Windows系统上:通常是MySQL安装目录下的 `my.ini`
- 我这里是liunx环境,mysql是部署在docker容器的
- 打开配置文件 mysql容器下 /etc/mysql/my.cnf 文件, vi my.cnf文件编辑, 在 [mysqld]部分下面添加或修改max_connections的值:
- 容器内部默认是没有vim编辑器的,所以需要自己装一下
apt-get install vim
- 修改内容如下
[mysqld] 
max_connections = 200

- 保存配置文件并重启MySQL容器以使更改生效。
docker restart mysql

- 然后我们进入mysql容器并且登录mysql 验证测试一下最大连接数是否变成了200,如下图,修改成功!

总结
连接过多,所以被拒绝连接了,我这边采用的方案是扩大最大连接数~
- 编写有误还请大佬指正,万分感谢。



![[word] word如何编写公式? #微信#知识分享](https://img-blog.csdnimg.cn/img_convert/4853694ba9ffc939ba94a06d74ad852c.gif)















