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