我在这里束手无策。一个客户有一个wordpress网站,预计下周六会有大量流量。我被问到站点是否能够处理负载,使用jmeter我的回答是“否”,因为它一直存在数据库连接问题。
现在,关于我发现的配置和问题。
这是一个云主机,据我所知,它不是共享的,使用的是标准的apache/linux配置。mysql的“max\u connections”变量是1000,我的测试失败的速度甚至是每秒50个连接。ShowProcessList没有显示任何异常,最坏的情况是两个线程休眠3秒,但没有挂起的查询或任何类似的内容。
wordpress本身是一个相当标准的配置。确实使用了几个插件,其中最明显影响数据库性能的插件是。其他一切都是一个画廊插件,然后一些小东西,如联系形式。总共10个插件。
对于缓存,我使用w3totalcache的页面、对象和数据库缓存。我甚至对w3 cache的默认配置以外的查询强制缓存,比如count()查询,它似乎在显示所有缓存的查询。
但是,jmeter在50/sec连接时显示高达50%的故障。它并不完全一致,有时会上上下下,但仍然远远高于可以接受的水平,据我所知,远远低于服务器的1000个连接限制。仍然得到太多的连接问题。如果我关闭缓存,它会变成90%,所以这显然是有帮助的。
在这一点上,我不知道如何进一步缓解这个问题。即使我禁用了所有的插件,这个数字仍然保持在1%以上,因为主页几乎什么都不显示,但显然我不能禁用所有的插件,因为这几乎破坏了网站。我希望能禁用一对或暂时强制静态响应出他们,但必须有一些潜在的问题导致这一点,因为我不确定这甚至会被接受的客户端。
如何进一步调试这个问题?例如,是否每个插件都有可能创建自己的新连接?有什么方法可以调试,例如,在脚本执行结束时打开了多少个连接?
1条答案
按热度按时间pjngdqdw1#
研究如何使用查询监视器来准确地查看什么代码正在运行什么类型的查询它们需要多长时间等。
https://wordpress.org/plugins/query-monitor/
这是对性能优化模板和各种调用进行基准测试的一个很好的工具。