MySQL服务器设置max_user_connections防止连接耗尽,以提高可用性
问题简述/现象及原因
一台MySQL服务器上,有多个数据库,由不同用户使用,相互之间没有或很少关联性。典型的实例是虚拟主机,或者有N多个小网站的某些低频企业应用。
这种环境下,难免有部分应用的质量不高:
出现效率极低的慢查询 -> 后续请求大量被locked排队 -> MySQL服务实时连接数达到最大连接数限制 -> 无法建立新连接
so, 所有相关应用全部挂掉
应对方案
为防止上述情况发生,要为MySQL配置max_user_connections参数。该参数作用是设置单个用户最大连接数限制。具体设置多少,要根据实际情况再裁定。
需要引起注意的是,这个参数是针对所有用户的限制,所以要考察正常情况下连接数最多的用户。可以使用下面语句实时查询各用户连接数。
select `USER`,COUNT(`USER`) AS CNT from information_schema.PROCESSLIST GROUP BY `USER` ORDER BY CNT DESC;
一个参考数值,将 max_user_connections 设置为正常情况下单用户最大连接数的3-5倍。
max_user_connections参数可以在MySQL运行时动态设置 set global …. 当然,也要同步写到my.ini配置参数里。
方案评估
max_user_connections 是个一刀切的配置参数,好像MySQL不能对每个用户设置连接数,并发查询数,io,cpu占用或其它什么什么的细粒度参数。或许并非一定有效。
与max_connections参数对比
max_connections 是指整个mysql服务器的最大连接数;
max_user_connections 是指每个MySQL用户的最大连接数
您可能感兴趣的文章:
MySQL服务器设置max_user_connections防止连接耗尽,以提高可用性
mysql报错too many connections的解决方法
mysql 1203错误的解决方法
安装连接mysql的工具Navicat 出现1044/1045错误的解决方法
MySQL sleep进程连接过多卡住了问题解决办法
mysql配置文件中文解释
mysql sleep连接过多的解决方法
php网站速度变慢的原因综合分析
mysql: too many connections的解决方法
PHP网站大流量与高并发的解决方法