Moodle 中的 LDAPS Auth 非常慢

Moodle 中的 LDAPS Auth 非常慢

我有一个使用 LDAPS 身份验证的 moodle 安装,它非常慢或根本不起作用。它是 debian 12、apache2.4、moodle4.1 和 php7.4。

我进行了测试安装,一切正常,我比较了配置,没有太大区别。

这是我在错误日志中发现的内容,但我仍然不知道它为什么这么慢:

绑定结果:''\n 调试:\n错误代码:auth_ldap_noconnect_all\n* /auth/ldap/auth.php 第 1997 行:抛出 moodle_exception\n* /auth/ldap/auth.php 第 1074 行:调用 auth_plugin_ldap->ldap_connect()\n* /auth/ldap/auth.php 第 1802 行:调用 auth_plugin_ldap->is_role()\n* /lib/moodlelib.php 第 4513 行:调用 auth_plugin_ldap->sync_roles()\n* /login/index.php 第 154 行:调用 authenticate_user_login()\n'

AH01071: Got error 'PHP message: Default exception handler: Das LDAP-Modul kann keine Serververbindung herstellen: Server: 'ldaps://my-domain.de:10636', Bind result: ''\n Debug: \nError code: auth_ldap_noconnect_all\n* line 1997 of /auth/ldap/auth.php: moodle_exception thrown\n* line 1074 of /auth/ldap/auth.php: call to auth_plugin_ldap->ldap_connect()\n* line 1802 of /auth/ldap/auth.php: call to auth_plugin_ldap->is_role()\n* line 4513 of /lib/moodlelib.php: call to auth_plugin_ldap->sync_roles()\n* line 154 of /login/index.php: call to authenticate_user_login()\n', referer: https://www.my-domain.de/moodle/login/index.php

服务器上运行的 ldapsearch 有时也会运行缓慢(时间各不相同)

任何有助于找到解决方案的提示都会受到赞赏。

答案1

问题要么是 LDAP 服务器的性能,要么是 moodle 主机和 LDAP 主机之间的连接。正如它所述:无法建立连接。

可能存在大量针对 LDAP 服务器的请求。服务器可能无法处理所有这些连接,因此某些连接可能会超时并显示错误。

您可以尝试将 LDAP 的相关树复制到在 moodle 服务器上运行的 LDAP 实例中,并针对该服务器进行身份验证。或者,尝试找出是否有一些可用的缓存机制来卸载连接。

答案2

如果您的 LDAP 服务偶尔以 RST(连接重置)响应,则可能的原因是您的侦听套接字的 TCP 侦听积压太低,或者您的 LDAP 服务器响应太慢并且工作线程的响应速度不够快以接收新的连接。

我最近遇到了 389 目录服务器(又名 Fedora 目录服务器)的一个问题,由于频繁的长时间搜索(用于同步作业),工作线程在生产中过于繁忙。工作线程池的大小根据可用的 CPU 核心数自动调整。如果当时没有可用的工作线程,则新操作/连接必须等待。

如果您正在为 LDAP 过滤器使用自定义属性,请确保已创建适当类型的索引。您的 LDAP 访问日志可能包含一些未编入索引的查询警告。

与 ldapsearch 相比,一个不同点可能是 Moodle 是否正在进行连接池...我不太熟悉 Moodle 或 PHP,不知道那里会发生什么。

确保您的 ldapsearch 查询与 Moodle 所做的完全相同。

如果您需要更多帮助,了解您正在使用哪种 LDAP 服务将非常有用。

相关内容