使用数据库缓存,非共享主机在wordpress上发生太多连接问题

时间:2018-05-21 20:19:33

标签: php mysql wordpress

我在这里结束了我的智慧。 一个客户有一个wordpress网站,预计下周六将有大量的流量。我被要求查明该站点是否可以处理负载,并且使用JMeter我的回答是“否”,因为它一直存在数据库连接问题。

现在,我找到了配置和问题。

这是一个云托管,据我所知,不使用标准的apache / linux配置进行共享。 Mysql的“max_connections”变量是1000,我的测试甚至在50次连接/秒的时候都失败了。 SHOW PROCESSLIST没有显示通常的情况,最坏的情况是几个线程在睡3秒钟,但没有被绞死的查询或类似的任何东西。

Wordpress本身是一个相当标准的配置。使用几个插件,最明显影响数据库性能的是woocommerce。其他一切都是一个画廊插件,然后是一些小的东西,如联系表格。总共10个插件。

对于缓存我正在使用W3 Total Cache的页面,对象和数据库缓存。我甚至强迫缓存查询不是像COUNT()查询那样在W3缓存的默认配置上,并且它似乎正在工作,因为它显示了缓存主页上的所有查询。

但是,JMETER在50 /秒连接时显示高达50%的故障。它并不完全一致,有时会上下移动,但仍然高于可接受的范围,而且我理解的方式低于服务器的1000连接限制。仍然有太多的连接问题。如果我关闭缓存它会达到90%,所以这显然有帮助。

此时,我不确定如何进一步缓解此问题。即使我禁用每个插件,数字仍然高于1%,因为主页然后几乎没有任何显示,但显然我不能只是禁用所有插件,因为这几乎打破了网站。我希望能够禁用一对或临时强制静态响应,但必须有一些潜在的问题导致这种情况,因为我不确定这对客户端是否可以接受。

我怎样才能进一步调试此问题?例如,每个插件是否可能创建自己的新连接?有没有办法可以调试,例如,在脚本执行结束时打开了多少个连接?

1 个答案:

答案 0 :(得分:1)

使用查询监视器查看确切的代码运行了什么样的查询等等。

https://wordpress.org/plugins/query-monitor/

这是一个用于对性能优化模板和各种调用进行基准测试的绝佳工具。