记一次线上数据库用户到达最大连接数错误

前言

连接错误提示: ERROR 1203 : User admin already has more than 'max_user_connections' active connections

这个提示很明显是 用户 admin 的活动连接已经超出max_user_connections;

这里涉及到两个 MySQL 的系统变量:

  • max_user_connections : 任何给定的MySQL用户帐户允许的最大同时连接数。值0(默认值)表示 “无限制。”
  • max_connections : 允许的最大同时客户端连接数 mysqld实际上允许 max_connections + 1个客户端连接。保留额外的连接,以供具有CONNECTION_ADMIN特权(或不建议使用的SUPER 特权)的帐户 使用。通过将特权授予管理员而不是普通用户(不需要该特权的用户),即使连接SHOW PROCESSLIST了最大数量的非特权客户端,管理员也可以连接到服务器并用于诊断问题。 (参考: MySQL 常见问题 >> B.3.2.5 Too many connections )

处理问题

  • 使用 root 账号登录(应用连接用的账号是 admin)
  • 查询连接参数配置, 发现连接数配置为 200.
show variables like '%connect%';

记一次线上数据库用户到达最大连接数错误

  • 查询进程, 发现有 201 个进程(其中多的一个为当前登录的 root 账户, 即前面提到的给 super 账户保留的一个额外的连接)
select * from information_schema.processlist order by time  desc;
# 或
show processlist;

记一次线上数据库用户到达最大连接数错误记一次线上数据库用户到达最大连接数错误

参考: [8.14.1访问进程列表-每个过程列表条目均包含信息](https://dev.mysql.com/doc/refman/5.7/en/processlist-access.html)
  • 修改连接最大配置 修改后再次查询进程, 可发现已经有 221 个进程了;
set global max_connections=500;
set global max_user_connections=0;

记一次线上数据库用户到达最大连接数错误记一次线上数据库用户到达最大连接数错误

注意: 如果在 my.ini 配置文件中有配置, 记得同步修改;

记一次线上数据库用户到达最大连接数错误

上一篇:第3月第11天 vs2005调试 ace编译


下一篇:阿里云nginx报错问题:2048 worker_connections are not enough