[解决] MySQLNonTransientConnectionException: Too maany connections

报错信息

项目中有时候在启动springboot + mysql项目时会报错,报错信息:

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

根本原因:

出现这问题的根本原因:连接数超过了mysql的最大连接数max_connections,mysql默认max_connections=100;

解决办法

知道原因了就有了对应的方法,;

方法一:登录修改最大连接数(临时)

登录mysql修改最大连接max_connections

linux命令:

#mysql -u root -p

输入密码

-- 查看当前最大连接数

>show variables like 'max_connections';

>set global max_connections=1000;

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

方法二:修改配置文件

修改mysql配置文件my.ini 或 my.cnf 增加配置max_connections=1000,然后重启mysql;

查找my.ini/my.cnf

通常有两种可能,一个是在安装目录下,另一种是在数据文件的目录下;安装的时候如果没有人为改变目录的话,一般windows:c:/programdata/mysql往下的目录下,linux:/etc 目录下。

在[mysqld]下面添加
[mysqld]
max_connections = 1500

重启:

service mysqld restart

方法三:关闭闲置连接

show full processlist;

注意:

           如果将用户连接线程杀死断掉,而会话没有杀掉的话,该用户会话又会重新开启一个用户连接线程。 

    show processlist 只能列出当前100条。如果想全部列出,可以使用 SHOW FULL    PROCESSLIST命令

kill <id>

补充:

mysql两外两个参数调整闲置连接关闭时间,减少闲置连接数:

1)interactive_timeout:

参数含义:服务器关闭交互式连接前等待活动的秒数。交互式客户端定义为在mysql_real_connect()中使用CLIENT_INTERACTIVE选项的客户端。
参数默认值:28800秒(8小时)

2)wait_timeout:
参数含义:服务器关闭非交互连接之前等待活动的秒数。
在线程启动时,根据全局wait_timeout值或全局interactive_timeout值初始化会话wait_timeout值,取决于客户端类型(由mysql_real_connect()的连接选项CLIENT_INTERACTIVE定义)。
参数默认值:28800秒(8小时)

3)show processlist:

命令查看当前系统的连接状态;如果发现有大量的sleep状态的连接进程,则说明该参数设置的过大,可以进行适当的调整小些

4)查看用户连接数

select  * from performance_schema.users;

最后:

服务器所支持的最大连接数是有上限的,因为每个连接的建立都会消耗内存,我们尽量设置合理的数值,并不是越大越好;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值