最近一个项目中并发过高没配置并发数报错;最后发现是MySql连接数过多,记录一下,
MySQL无论如何都会保留一个用于管理员(SUPER)登录的连接,用于管理员连接数据库进行维护操作,即使当前连接数已经达到了max_connections。因此MySQL的实际最大可连接数为max_connections+1;
Mysql5.5 mysql5.6 mysql5.7:默认的最大连接数都是151,上限为:100000
Mysql5.0版本:默认的最大连接数为100,上限为16384
查看MySql最大连接数:
show variables like '%max_connections%';
查看MySql当前连接数:
show global status like 'Max_used_connections';
设置MySql当前连接数:
set GLOBAL max_connections=100000;
以上方法在Mysql重启后就失效。
永久有效方法:
修改mysql配置文件my.cnf,在[mysqld]
段中添加或修改max_connections
值:max_connections=512
再重启mysql服务即可。
附加:单次最大写入量
抛出的异常是:
Packet for query is too large . You can change this value on the server by setting the max_allowed_packet' variable.
5.6.37版本的mysql默认单条语句最大4mb。
查看最大单次写入量max_allowed_packet
show VARIABLES like '%max_allowed_packet%';
修改my.cnf,在[mysqld]下新增:
max_allowed_packet = 16M