去评论
dz插件网

Discuz!X3.5安装的插件太多每次更新插件安装插件更新缓存都出现504 Gateway Time-out的解决办法及优化方法

admin
2023/08/05 14:10:35
Discuz!X3.5安装的插件太多每次更新插件安装插件更新缓存都出现504 Gateway Time-out的解决办法及优化方法:

如图所示:


之前写过一篇比较基础的优化方法:

解决插件加载比较慢jq冲突环境问题性能问题的几个有效改善经验分享
https://www.dz-x.net/t/23520/1/1.html
(出处: DZ插件网)


下面针对discuz论坛后台究竟最多能够装多少插件,装多少插件后遇到卡死安装不上的上限阈值是多少,一个论坛最多可以装载多少数据表等等问题进行一一的分析和优化,

请记住一句话:论坛的所有的操作包括但不限于打开帖子、发表帖子、点击操作等任何操作都是数据库查询的结果的,那么数据库如果优化到位,论坛毫秒甚至无感响应才能成为现实。

以dz插件网演示站为例:demo.dz-x.net 上面共安装启用了233个插件(含dz自带的4个插件),数据库共 1881张表,合计1.29G数据大小,数据库版本:10.2.38-MariaDB。
关于 MariaDB 性能与 MySQL性能对比区别见:https://www.dz-x.net/s/14460.html

粗略估计,基本上dz后台安装200+插件就是上限了,再多基本上要么安装建表不完整,要么更新缓存就报错,更新插件报错 等等~

[此处包含隐藏内容,如果需要查看请回复]
然后保存后,点下左上面菜单 —— 服务 —— 重启:



需要注意的是,以下是直接影响查询性能的重点优化项:
max_connections:增加最大连接数,以支持更多的并发连接。
innodb_buffer_pool_size:增加InnoDB缓冲池的大小,以提高读取性能。
innodb_log_file_size:增加InnoDB日志文件的大小,以提高写入性能。
query_cache_size:启用查询缓存,并设置适当的缓存大小。

除了数据库本身的优化之外,网站程序尤其插件程序是否考虑数据库的查询优化也是重要因素,但是指望作者对自己程序优化毕竟不是大多数作者有能力或者愿意解决的问题:

为什么要优化插件的数据库查询语句:检查网站中的数据库查询语句,确保它们是高效的。使用索引来加快查询速度,避免全表扫描。可以使用EXPLAIN语句来分析查询语句的执行计划,找出潜在的性能问题。

使用数据库缓存:MariaDB支持查询缓存功能,可以通过设置query_cache_size参数来启用查询缓存。查询缓存可以缓存查询结果,减少数据库的访问次数。

分区表:如果数据库中的表数据量很大,可以考虑使用分区表来提高查询性能。分区表将数据分成多个分区,可以根据查询条件只查询特定分区,减少查询的数据量。

数据库连接池:使用连接池可以减少每次请求创建和销毁数据库连接的开销。可以使用连接池技术,如HikariCP或C3P0,来管理数据库连接,提高数据库访问的效率。

使用性能监控工具:可以使用性能监控工具,如Percona Toolkit或pt-query-digest,来分析数据库的性能瓶颈,找出慢查询和优化的潜在问题。


宝塔面板本身也可以直接查看数据库慢日志:在宝塔左侧 —— 软件商店 —— 已安装 —— 找到你自己的数据库版本 —— 后面的“设置” —— 打开 —— 最后一项“慢日志”,
如图:根据慢日志信息找出具体是哪个表,进入数据库管理里面,适当清理一些旧数据,以免单个表过大。



根据插件网实测,一个插件的单张表超过几百M基本上就严重影响论坛打开帖子、尤其打开版块的速度、后台更新插件、安装插件、配置插件、后台更新缓存操作最能体现论坛访问速度。


以上仅是从数据库层面的优化分享,后面继续完善该贴,以从论坛程序尤其插件程序层面自动扫描影响性能的语句找出问题节点的方法~