MySQL中出现“Too many connections”报错

问题描述

通过客户端连接MySQL数据库后,数据库返回类似如下提示。

Too many connections

问题原因

可能存在以下部分原因:

  • 数据库的性能不符合业务需求。
  • 如果代码有缺陷,可能会造成连接数较多。

解决方案

方法一:调整数据库最大连接数或休眠时间

  • 调整最大连接数
    1. 在数据库中使用root用户,执行以下SQL语句,查看当前所有线程数。
      show full processlist;
    2. 若线程数较多或者大于当前实例规格的最大连接数,根据实际业务场景,升级实例配置以便增加数据库的最大连接数,关于升级实例的操作,请参见变配
      说明
  • 调整休眠时间
    可以参考设置实例参数调整连接数据库的wait_timeout参数,根据业务场景需求,若wait_timeout参数较大,可以将wait_timeout参数调小。

方法二:查找报错日志信息定位问题

  1. 在数据库中,执行以下SQL语句,查看日志文件所在路径。
    show global variables like 'log_error';
  2. 根据返回的信息,查看对应目录下的日志文件内容,根据文件内容定位问题。

方法三:重启连接服务器的服务

  1. 如果本地有调试,或者测试环境有代码缺陷,可以先修改代码,然后重启连接上该数据库的服务,使服务端释放部分连接。
  2. 如果重启服务后,仍然发生该报错,请联系对应业务的DBA,终止服务器连接或者重启数据库。查看对应业务的DBA请参考以下内容:
    1. 登录DMS控制台
    2. 在左侧的导航栏中找到需要查看的数据库,右键单击目标实例,在弹出的列表中选择实例DBA即可查看数据库对应的DBA。
      Dingtalk_20201109162221.jpg

适用于

  • 数据管理DMS