建立数据库连接时出错-流量大吗?

时间:2013-04-25 作者:codescribblr

我有一个WordPress 3.5.1网站,流量很小(80个并发访问者,每秒约5次点击/页面浏览)。该网站运行良好,直至达到约85名访问者。通常有4名管理员同时登录。该网站有8种自定义帖子类型——帖子有3500篇帖子,新闻稿(自定义帖子类型)有13000篇帖子。所有这些都是在网站上分页的,所以任何一个页面上显示的帖子都不会超过20条。

我使用的唯一插件是wp pagenavi和w3totalcache。

我将WP\\u DEBUG\\u LOG设置为true并记录错误。我得到的主要错误(除了与此问题无关的各种通知和警告)是mysql已达到max\\u user\\u connections限制。

我当前的max\\u user\\u connections设置为75。我试图将其设置得更高,但cpu无法处理负载(4个四核cpu,每个2.17GHz,内存4GB)。

是什么导致了这么多的联系?

我查看了发生错误时运行的mysql进程,有许多连接说“正在睡觉”或“正在睡觉”(可能是15-20)。我还通过进程日志注意到,httpd在高峰流量期间经常重启。

关于如何解决这个问题有什么想法吗?

注意:如果您的答案是检查我的wp配置,请不要回复。php文件,并确保我的用户名、密码和主机是正确的。这不是问题所在。在正常交通条件下,现场工作正常。

2 个回复
SO网友:asunchu

我以前也遇到过同样的问题,正如您已经指出的,问题归结为mysql不接受太多连接,我们实现的解决方案是应用适当的缓存(检查缓存失效的频率和其他缓存设置)并升级mysql服务器。

作为一个快速修复,您可以使用flush hosts;

SO网友:s1lv3r

如果您已经安装了w3tc,我强烈建议您尝试优化设置。

通过memcache和静态资产CDN使用页面缓存。这为我在使用它的每个页面上的未登录用户提供了大约95%的性能提升。

页面缓存、数据库缓存和对象缓存在加载数据库服务器时特别有用。

如果您还没有在Web服务器前面使用远程代理,我也强烈建议您看看varnish.

结束