MySQL报错Too many connections解决方案

问题1: Too many connections

问题描述 :

项目中,mysql数据库在长时间使用的过程中,突然遇到 "Data source rejected establishment of connection, message from server: “Too many connections” .

产生原因:

当mysql的连接数达到上限值的时候,如果现有的连接没有关闭,则无法创建新的连接.

解决方案:

  1. 重启mysql服务.(当然不是最佳选择)

  2. 修改mysql的一些参数

    1.修改最大连接数,(也并非最佳方案.)

    show variables like “max_connections”;

    set GLOBAL max_connections=1000;

    2.set global interactive_timeout=500;修改这个数值,表示mysql在关闭一个连接之前要等待的秒数,至此可以让mysql自动关闭那些没用的连接,但要注意的是,正在使用的连接到了时间也会被关闭,因此这个时间值要合适.一般也不建议修改.

    3.修改超时连接时间.最好控制在几分钟之内.如下设置为5分钟(推荐做法)

    show global variables like ‘wait_timeout’;

    set global wait_timeout=300;

    总结:

    (1) 睡眠连接过多,会对mysql服务器造成什么影响?

    ​ 严重消耗mysql服务器资源(主要是cpu, 内存),并可能导致mysql崩溃。

    (2) 造成睡眠连接过多的原因?

    1. 使用了太多持久连接(个人觉得,在高并发系统中,不适合使用持久连接)
    2. 程序中,没有及时关闭mysql连接
    3. 数据库查询不够优化,过度耗时。

    (3)当然,更根本的方法,还是从以上三点排查之:

    1. 程序中,不使用持久连接,即使用mysql_connect而不是pconnect。
    2. 程序执行完毕,应该显式调用mysql_close
    3. 逐步分析系统的SQL查询,找到查询过慢的SQL,优化之.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值