我正在运行一个WordPress站点,每个月有500000名访问者,15万个帖子,平均每秒钟有100个页面浏览量。我试图找出服务器上的负载是否正常,或者我是否可以在不增加服务器安装和每月成本的情况下解决性能问题。
下面是我现在正在运行的服务器设置:
WordPress的主题是从零开始开发的,我优化了查询并最小化了插件的使用(总共有5个插件)。
我使用反向代理Cache运行Nginx,其中缓存所有页面5分钟,以便能够处理流量高峰(发送通讯时,3k访问者在30分钟内达到两个峰值)。
MariaDB和Redis服务器正在运行Debian,配置是开箱即用的。我唯一改变的是innodb_buffer_pool_size = 11G和max_connections =300in MariaDB。
当有100个实时访问者时,DB CPU以50%的速度运行,而在300-700个实时访问者的情况下,DB的运行速度为85-90%。
问题是,即使在CPU加载50%的情况下,加载查询也需要一些时间(3-6秒)。
我的暂存环境运行在完全相同的服务器上,但使用的是另一个数据库表(相同数量的帖子),查询时间为0,5-1,5秒。
因此,唯一的区别是生产数据库拥有更多的并发用户。
是什么使查询需要这么长时间来加载呢?
发布于 2019-05-02 20:12:03
首先,如果尚未启用慢查询日志记录,则启用以下操作:
https://mariadb.com/kb/en/library/slow-query-log-overview/
接下来,您可以接受其中一个查询,并将EXPLAIN放在前面。这将向您展示一个表,该表解释执行查询时发生了什么。例如,它将显示是否使用了索引,为什么要执行查询。下一页解释了所有列的含义:
https://mariadb.com/kb/en/library/explain/
大多数情况下,在具有良好基数的列上放置一个很好的out索引将大大减少执行查询所需的时间。
发布于 2019-05-03 02:47:14
可湿性粉剂的主要慢点之一是可修复的。
http://mysql.rjweb.org/doc.php/index_烹饪书_mysql#speeding_向上_wp_后元讨论了如何更改postmeta的模式(还有其他元表),以便使用该表的主要查询运行得更快。
https://serverfault.com/questions/965636
复制相似问题