如何解决MySQL max_user_connections错误

时间:2012-06-25 05:03:39

标签: mysql

当我尝试登录phpMyAdmin时出现以下错误。

用户 * *已超过'max_user_connections'有效连接

有人能让我知道如何从MySQL服务器端关闭这些数据库连接吗?

感谢您的时间!

5 个答案:

答案 0 :(得分:4)

最好的办法是增加$member = $member->toArray(); $placeholders = array_keys($member); foreach($placeholders as &$placeholder) { $placeholder ='%'.$placeholder.'%'; } $finalString = str_replace($placeholders, array_values($member), $string); 。对于服务于多个不同Web应用程序(原始php,WordPress,phpBB)的MySQL实例,您可能需要至少60的值。

发出此命令,您将了解可用的全球连接数量:

max_connections

您可以在任何特定时刻找到正在使用的连接数:

show global variables like '%connections%'

你可以找到每个连接的作用:

show status like '%connected%'

如果我是你,我会尝试至少100个连接的全局值。如果您无权访问,您的服务提供商应该能够为您提供帮助。它需要在MySQL的show full processlist 文件配置中完成。不要将它设置得太高,否则你冒着MySQL服务器进程吞噬所有内存的风险。

第二种方法允许您将这些整体连接分配给不同的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 kills it when running out of memory

顺便说一句,像WordPress这样的网络应用使用持久连接池。也就是说,它们建立与MySQL数据库的连接,保持它们打开,并重用它们。如果你的应用程序很忙,那么每个连接的生命周期都应该是几分钟。

答案 1 :(得分:3)

在这里,我认为你可以解决你的问题 max_connections

另请阅读此http://dev.mysql.com/doc/refman/5.5/en/too-many-connections.html

答案 2 :(得分:1)

首先,这是一个黑客,但有效,特别是在共享主机上 有时候我们都有不好的“邻居”,对吗?

如果您有权访问/ etc /,可以在my.cnf中或通过信息架构将限制从30增加到50。

  1. 要忽略访问者可能会看到的错误消息,请使用@mysql_connect()
  2. 如果有超过30个MUC,请使用“or die()”语句停止查询。
  3. 将“或死”消息替换为die(header(location: THIS PAGE)),并确保mysql_close();
  4. 是的,它会导致页面加载延迟。但是加载比白屏死机更好 - 或者是访问者不了解的更糟糕的错误信息。

答案 3 :(得分:0)

这是由于mysql配置中指定的限制,即系统变量max_user_connections

解决方案

杀死滞留在后端的查询只是我建议的解决方案,如果它是SELECT查询。更改数据的查询(如UPDATE / DELETE / INSERT)不会被杀死。

其次,您可以使用命令mysqladmin processlist来检查mysql内部的内容。

如果锁定导致您的问题,您可以检查您正在使用的引擎并将其更改为另一个引擎。 IBM的SolidDB documentation on table locks可能会对您有所帮助。虽然可能还有其他原因。 (例如,由于未经优化的查询,或者表大小太大,或者您有垃圾邮件数据库,可能您的查询花费的时间太长。)

答案 4 :(得分:0)

看起来查询卡在了服务器上。重新启动,一切都会好的。 如果您使用共享主机,只需与您的主机提供商联系,他们将对其进行修复。 我是便宜的用户,他们解决了。