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

2021/5/6 19:27:37

本文主要是介绍记一次线上数据库用户到达最大连接数错误,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

前言

连接错误提示: 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 配置文件中有配置, 记得同步修改;



这篇关于记一次线上数据库用户到达最大连接数错误的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程