当我尝试登录phpMyAdmin时出现以下错误。
用户 * *已超过'max_user_connections'有效连接
有人能让我知道如何从MySQL服务器端关闭这些数据库连接吗?
感谢您的时间!
答案 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。
@mysql_connect()
。or die()
”语句停止查询。 die(header(location: THIS PAGE))
,并确保mysql_close()
; 是的,它会导致页面加载延迟。但是加载比白屏死机更好 - 或者是访问者不了解的更糟糕的错误信息。
答案 3 :(得分:0)
这是由于mysql配置中指定的限制,即系统变量max_user_connections
。
杀死滞留在后端的查询只是我建议的解决方案,如果它是SELECT查询。更改数据的查询(如UPDATE / DELETE / INSERT)不会被杀死。
其次,您可以使用命令mysqladmin processlist
来检查mysql内部的内容。
如果锁定导致您的问题,您可以检查您正在使用的引擎并将其更改为另一个引擎。 IBM的SolidDB documentation on table locks可能会对您有所帮助。虽然可能还有其他原因。 (例如,由于未经优化的查询,或者表大小太大,或者您有垃圾邮件数据库,可能您的查询花费的时间太长。)
答案 4 :(得分:0)
看起来查询卡在了服务器上。重新启动,一切都会好的。 如果您使用共享主机,只需与您的主机提供商联系,他们将对其进行修复。 我是便宜的用户,他们解决了。