一、背景
前几天在测试线上环境的过程中,需要一直关注数据库的数据变化。由于线上的MySQL是用Docker搭建的,在本地连接时经常出现 "Too many connections" , 在百度上找了很久,找不到关于Docker环境下MySQL的设置问题。最后通过英文在Google上才找到Stackover上的一条解决方案,分享一下!
二、原因分析
1、使用Docker后,默认将MySQL的连接数设置为214,修改后不起作用
2、在my.ini中设置max_connections参数均无效
三、解决方案
解除Docker最大连接数限制有两种解决方案,具体使用哪种,请结合你的Docker环境!
第一种:在Docker启动容器时该参数:(适用于未使用DockerFile镜像构建文件和docker-compose文件构建的环境)
--ulimit nofile=65536:65536
第二种:修改Docker启动脚本实现:(适用于使用DockerFile镜像构建文件和docker-compose文件构建的环境)
(1)宿主机:vim /etc/init.d/docker
(2)在文件开始部分加入以下代码:
ulimit -u 65536 -HSn 65536
(3)保存并退出vim
Docker限制解除完后,我们再次修改最大连接数试一下!
1、进入MySQL容器
docker exec -it [container_id] /bin/bash
2、登录MySQL
mysql -u root -p[password]
3、查看最大连接数(默认为100)
SHOW VARIABLES LIKE '%max_con%';
4、设置最大连接数
SET GLOBAL max_connections = 1000;
5、退出MySQL容器,并重启容器,解除连接数限制成功!