性能错误-数据库查询速度慢

时间:2017-10-03 作者:Tomáš Bláha

自2017年9月26日以来,我的网站表现出现了严重问题。

加载单个帖子或任何其他页面甚至需要20秒。我一直在调试它,发现问题是DB查询。

例如,此操作几乎在每次加载页面时都会执行,大约需要36秒:

SELECT t.*, tt.*, tr.object_id
FROM   az2_terms AS t 
INNER JOIN az2_term_taxonomy AS tt
ON     t.term_id = tt.term_id
INNER JOIN az2_term_relationships AS tr
ON     tr.term_taxonomy_id = tt.term_taxonomy_id
WHERE  tt.taxonomy IN (\'znacka\', \'model\')
AND    tr.object_id IN (27130, 27290, 27822, 27899, 30862, 33536, 33721, 34901, 37448, 37482, 37496, 37522, 37572, 37580, 37742, 37750, 38160, 38165)
ORDER BY t.name ASC
当它第二次执行时,它几乎是即时的。自2017年9月26日以来,我没有做任何更改,只切换到HTTPS,这可能是问题所在吗?

3 个回复
SO网友:Rarst

WP在中小型站点上出现查询性能问题的情况相对较少:

它通常运行的查询是合理的(不是完美的,而是合理的)虽然您当然可以抛出足够多的代码让查询陷入困境,但20秒似乎是极端的。除非我们谈论的是成千上万的物品。

如果更改也很突然,我强烈怀疑问题出在DB服务器端,表可能需要优化/修复。

SO网友:Abhishek Ghosh

如果您使用的是流量良好的共享服务器,那么进行研究是没有意义的。您只需升级到VPS/云服务器即可。

如果是VPS/云服务器,那么这种突然的奇慢可能需要检查安全问题。一般来说,Fail2Ban已经足够了,但您需要执行安全审计以找到任何易受攻击的插件,您必须使用VPS/云服务器测试各种事情,例如高可用性。使用所有自定义代码段/修改进行完整备份。然后加载没有插件、没有自定义代码段/修改、默认主题的站点。

我不是数据库专家,但我建议将Percona MySQL与InnoDB引擎结合使用(MariaDB绝不是最差劲的),保留WordPress评论和pingback、trackback off、使用W3 Total Cache、禁用W3 Total Cache的数据库缓存、启用MySQL缓存等。我已经看到WordPress的主题可以做得最好,也可以做得最差。默认主题和StudioPress Genesis(付费)在我看来都接近最佳。

您应该启用MySQL缓存,这很重要(Percona\'s article on MySQL caching, my article on MySQL caching) 并测试各种设置。从调整数据库my.cnf 在托管服务器受到限制后,这是切实可行的,几乎没有好的专用服务器。如果硬件性能不佳,则无法正常工作。我建议阅读this answer of DB StackExchange 对于硬件和软件部分。

SO网友:John Biddle

在对第一个答案的评论中,您会问“7692832行是什么?”这是为您的查询检查的7692832行。可能比你想象的要多。

可以在连接的一侧找到43条记录,而在另一侧找到180000条记录,或者类似的东西。通过连接,它可以快速建立。

如果有查询要查找未编入索引的数据,则需要进行表扫描以查找数据。非常慢。确保为查询建立了正确的字段索引。Try this 寻求帮助。

结束

相关推荐

WP_Query正在获取帖子,但_post()未呈现任何帖子

问题描述:下面的代码来自一篇特色文章。php文件。将自定义帖子类型“特色文章”的此自定义模板从我的插件复制到活动主题文件夹。模板呈现良好。甚至是显示数组中数据的查询。参见:print\\r($featured\\u articles)的结果在第二部分但“the\\u post()”不显示任何帖子。代码有什么问题?<?php $featured_articles = new WP_Query(array(\'post_type\' => \'featured-article\'