我正在运行一个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 19:00:56
听起来你需要节点平衡器或增强服务器。
您有500,000访问者,每秒钟有100次页面浏览量,Wordpress以笨拙而臭名昭著,并以序列化数据库中的对象而闻名(显示的每个组件都是一个查询)。因此,假设您有一个简单的网站(15个查询)和5个插件(10个查询),现在将25乘以100页,在16 GB的RAM上每秒有2500次查询。这意味着每个查询获得大约0.0064 GB的内存或6.4兆字节。
除非您的数据库中的表足够小,可以容纳4.25张软盘,否则我建议您使用更多的电源。
发布于 2019-05-19 15:27:56
由于模式效率低下,使用wp_postmeta的查询速度很慢。你可以解决这个问题。
请参阅postmeta
这将比“向问题扔硬件”更有帮助。
https://stackoverflow.com/questions/55958063
复制相似问题