mysql连接数问题备份
一、 max_connections
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| max_connections | 1000 |
+-----------------+-------+
#详细连接信息
show full processlist;
实战:
vim /opt/lampp/etc/my.cnf
#add by chong
max_connections = 1000
/opt/lampp/lampp stopmysql
/opt/lampp/lampp startmysql
二、 max_allowed_packet
max_allowed_packet问题。。
- 查看目前配置
show VARIABLES like '%max_allowed_packet%';
- 修改方法
- 可以编辑
my.cnf
来修改(windows下my.ini
),在[mysqld]段或者mysql的server配置段进行修改。在[mysqld]下加上
max_allowed_packet=20M
保存重启mysql。max_allowed_packet = 20M
如果找不到my.cnf可以通过mysql --help | grep my.cnf去寻找my.cnf文件。
- 在mysql 命令行中运行 . 20M
set global max_allowed_packet = 2*1024*1024*10
然后关闭掉这此mysql server链接,再进入
#16M
mysql -h192.168.1.51 -uroot -e "set global max_allowed_packet = 1024*1024*16;show VARIABLES like '%max_allowed_packet%'"
三、 wait_timeout
mysql -uroot -e "show global variables like 'wait_timeout';"
mysql -uroot -e "set global wait_timeout=1814400; show global variables like 'wait_timeout';"
异常如下:
原因
mysql5连接的等待时间(wait_timeout)默认是8小时。
查看方法
show global variables like 'wait_timeout';
查看结果:
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| wait_timeout | 28800 |
+---------------+-------+
1 row in set (0.00 sec)
在wait_timeout时间里,mysql的connection处于等待状态,过了这时间mysql5就关闭了,但是java application的连接池仍然有合法的connection,当你再操作数据库时,就会出现这样的问题。
解决方法
mysql5之前的版本,可以在jdbc连接的url中加入:autoReconnect = true
mysql5中wait_timeout在window中最大为24天,在linux中最大为365天。
a、修改配置
如果在window中设置为21天,改mysql5的安装文件夹中的my.ini
如果在linux中/etc/my.cnf,添加一行:wait_timeout = 1814400,重启mysql,添加效果如下:
b、直接用sql命令行修改(重启有还原为28800,不推荐)
mysql> set global wait_timeout=1814400; mysql> show global variables like 'wait_timeout';