由于过多的数据库查询(在性能分析器上查看),课程主页上的性能下降

Slow performance on course main page due too much DB queries (seeing on performance profiler)

我有一个 Moodle 3.10.5 和两个课程的问题,让我解释一下。

我有两个课程是在 development moodle 上创建的,我们在一周前将它们导入到生产服务器上。今天晚上,200名学生被激活,生产课程出现了这个问题。主课程页面执行数千个数据库查询而且速度太慢,但前提是我使用 manager/admin 个人资料登录。同学们没有这个问题。

在开发服务器上,数据库查询是正常的(DB reads/writes: 252/1),但在生产服务器上,唯一的变化是 200 active学生(昨天学生已注册但不活跃,自今天 0:00h 以来注册活跃)还有几个问题 (DB reads/writes: 11012/1)。

我找不到原因,学生们运行正常的数据库查询没问题,但是管理员和经理太慢了,但只在主课程页面上(course/view.php?id=XX)!

这很烦人,因为在同一个生产平台上有更多 运行 没问题的课程。问题不在于服务器性能,而是 moodle 在这两门课程上执行的 dbqueries 数量,仅在课程主页上以及教师和经理记录的配置文件上。注意:这些经理和教师资料包含在课程 .mbz 包中。

如何查看数据库查询的来源?我在 config.php 上添加了“logall” 查询,但是在数据库中注册的 11k 查询很难调试和区分好坏。

开发服务器:

生产服务器:

编辑

我按照 davosmith 在其回复中建议的那样激活分析, 我认为是 Adaptable Theme 的问题,计算课程中的活跃用户,但是当我们在几个课程和服务器上使用这个系统没有问题时,这样做仍然很奇怪。我不知道如何解决这个问题。

我建议您使用此处列出的信息(和链接)在您的系统上设置一些 PHP 分析:https://docs.moodle.org/dev/Profiling_PHP - 我只使用过 Xhprof,所以我无法真正评论Xdebug 的工作情况如何。

此分析返回的信息将使您能够了解哪些功能在查看课程页面时占用的时间最多,并且应该可以帮助您缩小可能出现问题的范围。

我解决了这个问题。这是由主题“适应性”(https://moodle.org/plugins/theme_adaptable)引起的,该主题在主课程页面上显示了学生在测验模块上的尝试次数。我有一门课程有几个测验和数百名活跃学生,所以表现很关键。

我按照@davosmith 在他的回复中建议的那样在 moodle 上配置分析。有两种解决方案:

1。禁用自适应主题功能

禁用主题功能以在主页上查看测验尝试。转到 Admin > Appearance > Themes > Adaptable > Configuration,转到 Course sections (admin/settings.php?section=themesettingadaptable#theme_adaptable_course) 并禁用以下功能:

  • coursesectionactivityfurtherinformationdata
  • coursesectionactivityfurtherinformationlesson
  • coursesectionactivityfurtherinformationfeedback
  • coursesectionactivityfurtherinformationchoice
  • coursesectionactivityfurtherinformationquiz
  • coursesectionactivityfurtherinformationassign

或 2. 尝试对代码打补丁

尝试应用用户提交给主题的补丁。这个补丁是针对 activity.php 的,我认为是处理这个功能的文件。你可以在这里看到对话和补丁: