Moodle 3.4性能异常求助:登录缓慢、部分页面504/undefined弹窗
针对Moodle 3.4性能骤降及特定页面报错的排查方案
根据你描述的情况——Moodle运行两个月后突然局部性能暴跌,首页正常但登录慢、插件/调试页504超时、课程页弹出"undefined"对话框,而同服务器的WordPress完全没问题,主机也确认了服务器性能无异常——问题大概率出在Moodle自身的缓存、数据库、插件或配置上,我给你整理了按优先级排序的排查步骤:
1. 先清缓存!这是最常见的触发点
Moodle对缓存依赖极强,哪怕只是缓存文件损坏或者配置异常,都会导致动态页面(比如插件列表、课程页)直接拉胯:
- 要是还能进后台,直接去「站点管理」>「服务器」>「缓存」,先确认默认缓存的存储方式——之前如果配了Redis/Memcached,说不定是连接断了,暂时切回文件缓存试试;然后点「清除所有缓存」强制刷新
- 要是后台都进不去,直接手动删除
moodledata/cache文件夹里的所有内容,然后重启PHP-FPM或者你的Web服务器进程(比如Nginx/Apache)
2. 查数据库的慢查询和表状态
服务器CPU内存正常不代表数据库没问题,特定页面的超时很可能是触发了慢查询:
- 登录服务器查看数据库的慢查询日志(MySQL的话就是
slow_query_log),过滤Moodle相关的SQL语句,找找有没有执行时间特别长的语句(比如拉取插件列表、查询课程数据的) - 检查下Moodle核心表的状态,比如
mdl_plugin、mdl_course,这些表用久了容易产生碎片,执行OPTIMIZE TABLE mdl_plugin;和OPTIMIZE TABLE mdl_course;优化下 - 顺便看看数据库连接数够不够,执行
show variables like 'max_connections';和show processlist;,要是连接数快到上限了,就调大max_connections的值
3. 排查第三方插件冲突(重点!)
你是部分页面出问题,这几乎肯定和插件有关——要么是最近更新了某个插件出bug,要么是插件之间存在冲突:
- 要是还能进插件概览页,先看看最近有没有插件自动更新,逐个禁用最近更新的插件测试,看问题会不会消失
- 要是插件页直接504进不去,就直接改数据库禁用插件:执行
UPDATE mdl_plugins SET disabled = 1 WHERE name LIKE '%你怀疑的插件名%';,或者先批量禁用所有非核心插件,再一个个启用回来排查 - 课程页弹"undefined"大概率是前端JS崩溃了,开启Moodle调试模式看具体错误:修改
config.php,加上$CFG->debug = E_ALL; $CFG->debugdisplay = true;,刷新课程页就能看到具体的JS报错信息,顺着找对应的插件就行
4. 检查PHP和Web服务器的超时配置
有时候不是资源不够,是超时时间设短了:
- 查看
php.ini里的max_execution_time(至少设60)和memory_limit(至少256M),别被误改小了 - 检查PHP-FPM的状态,执行
systemctl status php-fpm(对应你的PHP服务名),看看有没有进程挂死或者崩溃 - 还要看Web服务器的超时设置,比如Nginx的
proxy_read_timeout、Apache的Timeout,适当调大一点试试,毕竟Moodle的插件页这类复杂页面加载时间会长一些
5. 最后检查moodledata的权限
权限混乱也会导致缓存写不了或者文件读取缓慢:
- 确认
moodledata及其子目录的所有者是Web服务器用户(比如www-data),权限设成770就好,符合Moodle的要求 - 看看
moodledata/temp里有没有一堆没清理的临时文件,手动删除这些垃圾文件,说不定能缓解性能问题
内容的提问来源于stack exchange,提问作者Davideg
相关产品推荐
相关产品推荐

