当我尝试登录 phpMyAdmin 时出现以下错误。
用户* * 已经有超过 'max_user_connections' 个活动连接
谁能让我知道如何从 MySQL 服务器端关闭这些数据库连接?
感谢您的时间!
当我尝试登录 phpMyAdmin 时出现以下错误。
用户* * 已经有超过 'max_user_connections' 个活动连接
谁能让我知道如何从 MySQL 服务器端关闭这些数据库连接?
感谢您的时间!
阅读max_connections文档来解决您的问题
如果客户端在尝试连接到 mysqld 服务器时遇到 Too many connections 错误,则所有可用连接都被其他客户端使用。
允许的连接数由 max_connections 系统变量控制。当 MySQL 与 Apache Web 服务器一起使用时,默认值为 151 以提高性能。要支持更多连接,请将 max_connections 设置为更大的值。
首先:检查您当前的数据库 max_connection 变量
SHOW VARIABLES LIKE 'max_connections';
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| max_connections | 151 |
+-----------------+-------+
然后尝试使用以下运行命令增加 max_connection 参数:
SET GLOBAL max_connections = 300;
或者在位于 /etc/my.cnf 的 my.cnf 中设置此参数
vi /etc/my.cnf
max_connections = 300
最后:重启mysql服务
你最好的选择是增加max_connections
。对于服务于多个不同 Web 应用程序(原始 php、WordPress、phpBB)的 MySQL 实例,您可能需要至少 60 的值。
发出这个命令,你会发现你有多少全局连接可用:
show global variables like '%connections%'
您可以像这样找出在任何给定时刻正在使用的连接数:
show status like '%connected%'
您可以像这样找出每个连接在做什么:
show full processlist
如果我是你,我会尝试至少 100 个连接的全局值。如果您无权执行此操作,您的服务提供商应该能够帮助您。它需要在my.cnf
MySQL 的文件配置中完成。不要把它设置得太高,否则你的 MySQL 服务器进程会吞噬你所有的 RAM。
第二种方法允许您将这些整体连接分配给不同的 MySQL 用户。如果您的每个 Web 应用程序都有不同的 MySQL 用户名,那么这种方法将适合您。这种方法写在这里。https://www.percona.com/blog/2014/07/29/prevent-mysql-downtime-set-max_user_connections/
控制这个问题的最终方法更加微妙。您可能正在使用 Apache Web 服务器作为底层技术。您可以减少同时运行的 Apache 任务的数量,以提高吞吐量。那是因为 Apache 将请求排队。如果它有几个任务有效地通过队列,那通常比很多任务更快,因为竞争更少。它还需要更少的 MySQL 连接,这将解决您的直接问题。这在这里解释:Restart Mysql automatically when ubuntu on EC2 micro instance kill it when running out of memory
顺便说一句,像 WordPress 这样的网络应用程序使用持久连接池。也就是说,它们建立与 MySQL 数据库的连接,保持它们打开并重用它们。如果您的应用程序很忙,则每个连接的生命周期应该是几分钟。
这是由于 mysql 配置中指定的限制,系统变量max_user_connections
。
杀死卡在后端的查询只是我建议的一个解决方案,如果它是一个 SELECT 查询。不会终止更改数据的查询,例如 UPDATE/DELETE/INSERT。
其次,您可以使用该命令mysqladmin processlist
检查 mysql 内部发生了什么。
如果锁定导致您的问题,您可以检查您正在使用哪个引擎并将其更改为另一个。IBM关于表锁的 SolidDB文档可能会对您有所帮助。尽管这可能还有另一个原因。(例如,您的查询可能由于未优化的查询而花费了太长时间,或者表大小太大,或者您有一个垃圾邮件数据库)。
首先,这是一个 hack,但可以工作,尤其是在共享主机上。
有时我们都有坏“邻居”,对吧?
如果您有权访问您的 /etc/,则在您的 my.cnf 中或通过信息模式将限制从 30 增加到 50。
@mysql_connect()
.or die()
”语句停止查询。die(header(location: THIS PAGE))
用并确保替换“或死”信息mysql_close()
;是的,它会导致页面加载延迟。但最好加载而不是白屏死机 - 或者访问者不了解的更糟糕的错误消息。
看起来查询卡在服务器上。重新启动,一切都会好起来的。如果您使用的是共享主机,请联系您的主机提供商,他们会修复它。我是 namecheap 用户,他们解决了它。