mysql too many connections_Mysql Too many connections

错误原因

java.sql.SQLException: Cannot create PoolableConnectionFactory (Data source rejected establishment of connection,  message from server: "Too many connections")

5cf126af19a6d143bdc29d434d059cbe.png

修改mysql的my.ini配置文件,网上的说法:mysql安装目录下的my.ini中设定的并发连接数太少或者系统繁忙导致连接数被占满。

而项目实际上部署在linux系统上,需要找到my.cnf的配置文件,一般在etc/my.cnf,找到这个文件,[mysqld]下添加如下行:

max_connections=1000

max_user_connections=500wait_timeout = 28800

interactive-timeout = 28800

之后重启mysql,生效。

1、使用 service 启动:

service mysqld restart

service mysql restart (5.5.7版本命令)

2、使用 mysqld 脚本启动:

/etc/init.d/mysqld restart

max_connections: 为设置最大的连接数

max_user_connections:设置每用户最大的 连接数500

wait_timeout:表示200秒后将关闭空闲连接,但对正在工作的连接不受影响。

查看连接数是否被修改

show variables like '%connection%'

bb445e85c1e823694c1ceed8369777f8.png

max_connections代表允许连接数据库的所有用户的连接数总和,是对整个服务器的用户限制,整个服务器只能开这么多session,而不考虑用户!

max_user_connections限制每个用户的session连接个数,每个用户都可以连接,但是连接只能这么大值(用户数指root)

查看服务器线程数

show global status like 'Thread%';

d1d8a84a0f373d363befca8595b7e94c.png

thread_cached :代表mysql管理的线程池中还有多少可以被复用的资源

Threads_connected : 当前打开的连接的数量。(和show processlist一致)

thread_created : 代表新创建的thread(根据官方文档,如果thread_created增大迅速,需要适当调高thread_cache_size)

thread_running :代表真正在运行的(等于1一般就是这个show status命令本身)

mysql建立连接非常消耗资源,所以就有了thread_cache,当已有连接不再使用之后,mysql server不是直接断开连接,而是将已有连接转入到thread_cache中,以便下次在有create thread的需求时,可以在cache中复用,提高性能,降低资源消耗。

当然,如果已经有了中间件或者其他的连接池管理,那么这个参数就没有那么重要了,但是如果没有其他的连接池管理,那么优化这个参数还是可以得到不错的回报的。

所有用户的当前连接。如果是其它普通帐号,只能看到自己占用的连接。

show full processlist;

026bdad39788d284447047d5164a846f.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值