我收到以下错误:
mysql_connect(): Too many connections
它完全关闭了我的网站,该网站已经无缝运行了好几年.
注意:我与GoDaddy共享托管.
我该如何解决?
另外:有没有办法在共享主机方案上关闭所有连接并重新启动?
当mysql服务器达到其最大并发客户端连接的软件可配置假设限制时,连接到mysql时会出现"太多连接"错误.
直接连接到mySQL服务器(通过localhost),并执行查询:SET GLOBAL max_connections = 1024;
在运行时更改连接限制(无停机时间).
使您的更改成为永久更改,并编辑/etc/mysql/my.cnf(或类似)并max_connections = 1024
在该[mysqld]
部分中添加行内容; 如果您无法进行实时更改,请重新启动.
选择的1024的限制是纯主观的; 使用你想要的任何限制.您还可以通过查询检查当前限制SHOW VARIABLES LIKE "max_connections";
.请记住,这些限制是有用的,以防止后端数据库不必要的过载.所以总是选择明智的限制.
但是,对于这些步骤,您需要直接访问数据库mySQL服务器.
如你所说,你正在使用Godaddy(我不太了解它们),你可以选择联系你的服务提供商(即Godaddy).但是,无论如何,他们也会在他们的日志中看到这一点.
这当然意味着,太多客户端正在尝试同时连接到mySQL服务器 - 从每个配置指定的人工软件限制.
最有可能的是,你一直是DDoS
攻击的对象.
这个论坛上的人们对完全相同的提供者抱怨完全一样.
答案是这样的:
VB告诉我这是DOS攻击 - 这是他们的消息:
这不是'漏洞'.这是DoS攻击(拒绝服务).不幸的是,我们无能为力.DoS攻击只能在服务器或路由器级别进行,这是您的主机的责任.他们决定采取简单的方法暂停您的帐户,而不是这样做.
如果你不能让他们认真对待,那么你应该寻找另一个主持人.关于这些坏消息我很遗憾.
可能的解决方法是:如果连接失败mysql_connect(): Too many connections
,则不退出,而是退出sleep()
半秒并尝试再次连接,并仅在10
尝试失败时退出.
这不是解决方案,而是一种解决方法.
这当然会延迟你的页面加载,但它比一个丑陋的too many connections
消息更好.
您还可以使用某种方法来告诉机器人和浏览器.
比如,设置一个盐渍SHA1
cookie,重定向到同一页面,然后检查该cookie并MySQL
仅在用户代理通过测试时才连接.