首页 > 数据库技术 > 详细

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

时间:2021-05-06 15:01:42      阅读:13      评论:0      收藏:0      [点我收藏+]

前言

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

技术分享图片

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

原文:https://www.cnblogs.com/52liming/p/14734074.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!