在堆栈溢出的情况下,我已经阅读了有关此主题的所有问题/答案,但是很遗憾,没有一个问题可以解决我的问题。
在最近几天,mysql错误“连接过多”一直显示在网站日志中,并为每个客户端挂起了整个网站。实际上,它会将服务器上的所有网站挂起。
这是我的问题/评论:
非常感谢您的帮助!
答案 0 :(得分:1)
在我们的案例中,解决方案将mysql变量“ wait_timeout”从8小时(默认为wtf !?)降低到180秒。并且如果需要,它仍然可以降低更多。这必须由托管公司完成,因为我们没有对服务器的root访问权限。
我在问题中提到的所有其他解决方案均无效,例如“ pconnect = false”和“ db-> close”。
“ Threads_connected”现在始终低于100或200,而不是此修复之前的近1000。
我的团队为这个问题苦苦挣扎了两天,网上有很多人在寻求解决方案,但没有任何(有效的)答案。
干杯:)
答案 1 :(得分:0)
我也遇到同样的问题。当我通过以下查询检查MySQL中当前的活动连接数时:
show processlist
在睡眠模式下有很多连接。搜寻后,我发现:
创建数据库连接时,还会在数据库服务器上同时创建一个会话,但是如果该连接和会话未正确关闭,则等待时间结束后查询将进入睡眠模式。
要解决此问题,我以@Pedro身份执行,通过在mysql中运行以下命令将wait_超时更改为180:
SET GLOBAL wait_timeout = 180;
使用这种方法,您无需重启mysql服务即可生效。
您可以在此处了解更多信息:https://www.znetlive.com/blog/what-is-sleep-query-in-mysql-database/