访问网站时提示:Warning: mysqli_connect(): (42000/1203): User bdm769854513 already has more than 'max_user_connections' active connections in /data/home/byu7708820001/htdocs/conn/conn.php on line 5
Warning: mysqli_query() expects parameter 1 to be mysqli, boolean given in /data/home/byu7708820001/htdocs/conn/conn.php on line 6
数据库连接失败: User bdm769854513 already has more than 'max_user_connections' active connections
我重启了服务器可以正常访问,但过一会儿又会提示连接数占满!我用的是阿里云虚拟主机数据库连接数最大80,
我查询资料提示可能是网站程序没有配置自动回收数据库链接导致一直新建连接将连接数占满了!但我不会改代码!
没采纳答案之前就是问题还没解决!
最好的解决办法是:给不同的程序分配不同的账户,并对每个账户设置不同的最大连接数。
mysql> GRANT USAGE ON *.* TO 'batchjob1'@'localhost'
-> WITH MAX_USER_CONNECTIONS 10;
提供参考实例:https://www.cnblogs.com/janehoo/p/5587727.html
把数据库连接池的配置信息贴一下
这个问题,100%是你程序的问题,建议让原来程序员修改一Bug;那么你不会技术,临时的解决方案就是,写一个定时任务,每个几分钟或者多长时间自动重启一下你的程序。反正PHP启动很快。
1、临时解决方法:
登录主机管理控制台,单击网站信息区域的停止站点,等待一段时间后,开启站点并确认能正常访问。
2、永久解决方法:
建议优先进行程序优化,程序中调用数据库的会话要及时关闭。
由于云虚拟主机是共享资源,考虑到稳定性,配置是不支持修改。如果此连接数的限制无法满足使用,可以考虑使用云服务器ECS和云数据库RDS产品解决该问题。
首选方案还是优化程序, 有两种方式:
第一种方式: 数据库连接采用单例模式, 避免频繁创建: https://www.huiyani.com/archives/70/
第二种方式: 查询完之后, 手动调用mysqli_close方法关闭: https://m.51sjk.com/b38b324521/
虚拟主机数据库连接数最大80 太少了,建议增加,其次检查代码,使用数据库连接池,使用完及时回收
不会改代码就改数据库的配置,不过改了配置要重启
设置mysql最大并发数量,确保代码层面没有频繁去连接数据库