Мудл сломал сам себя

Мудл сломал сам себя

от Сергей Жирнов -
Количество ответов: 9

Произошла такая ситуация, что в 9 утра мне начали разрывать контакты с вопросом что с мудлом (не могли войти\падал в 502\504), я пытался параллельно посмотреть логи и понять что произошло и спустя 2 часа поисков (к слову, в системных логах ничего про ошибку не было) - плагин синхронизации LDAP не смог сделать до конца проверку (он загружал с АД 1069 пользователей и далее падал), а последней строкой 2 дня подряд (каждые 2 часа) было "

Записи пользователей, которые будут добавлены: 9!!! Исключение - Call to undefined method cachestore_dummy::find_by_prefix() !!!
"

и из-за этой ошибки вся задача проваливается и он начинает сначала (и продолжает пытаться выполнить задачу каждые 2 минуты). Нашел на форуме ответ мол очистите кэш. Я очистил кэш, после чего у меня отвалилась база данных и не отвечала минут 15 (находится на отдельном сервере). После база вернулась и о чудо, задача отработала. Еще через час мне снова начали разрывать телефон, но теперь уже с вопросом, куда пропали файлы. Я не поняв ситуации захожу на мудл и наблюдаю такую картину, что все прикреплённые к ответам файлы просто перестали отображаться! Я подумал что с кэшем очистилась и мудлдата, однако в бд запись с файлом и сам файл в мудлдате лежат спокойно (попробовал открыть файлы из мудлдаты). Собственно вопрос: как можно восстановить отображение файлов и почему вылезает данная ошибка?


P.S. Moodle 3.9.2+ ресурсы - 14ядер ЦП, 16Гб ОЗУ, 500Гб HDD

В ответ на Сергей Жирнов

Re: Мудл сломал сам себя

от Vadim Dvorovenko -
Изображение пользователя Developers Изображение пользователя Майнтейнер перевода

у вас почему-то используется cachestore_dummy. Судя по названию, это какой-то класс для заглушки, он не должен использоваться на проде. Откройте страницу настроек хранилищ кэшей, и посмотрите, нет ли там чего необычного.

То, что после очистки кэшей ложится БД - возможная ситуация, так как до перестройки кэша база данных начинает делать всё сама.

В следующий раз старайтесь не чистить кэш в пиковое время. Возможно после ещё одной чистки ситуация улучшится - возможно в момент перестроения кэша бд уже лежала, и в кэш записалось пустое значение.


Чтобы не обрывали телефон, напишите успокаивающее сообщение о техобслуживании, и включайте режим техобслуживания при таких проблемах (даже если сайт лёг, это можно сделать из командной строки). Такое сообщение будет людям понятнее, чем database connection failed.

Какой у вас основной кэш? Если в файловой системе, то потратьте немного времени, настройте кэш в редисе - меньше будет нагрузка на диск, памяти у вас для такого варианта достаточно.


В ответ на Vadim Dvorovenko

Re: Мудл сломал сам себя

от Сергей Жирнов -
Одну из проблем решил (с вызовом класса), помогло еще раз пересоздать конфиг moodledata (т.к. после первой попытки и отвала базы грешил на него и вернул старый), однако осталась не решённой проблема спонтанной пропажи файлов.

Такая ситуация была: студент загрузил файл в ответ задания, преподаватель скачал в этот же день файл, а через день файла как будто и не было, но при этом я убедился в том, что файл был просмотрев логи апача (бал GET запрос на загрузку файла) и в бд имеется путь до этого файла, однако мудл отказывается его отображать в ответе студента. Почему это происходит - осталось загадкой (некоторые ответы с файлами месяц держатся спокойно). Ну и последний инцидент это то, что мудл перестал отображать около 95% файлов (при этом они все остались в мудлдате). В какую сторону можно копать по этой проблеме?
В ответ на Vadim Dvorovenko

Re: Мудл сломал сам себя

от Сергей Жирнов -
Кэш не настраивал, остался стандартный. По вашей рекомендации сейчас настроил кэш в Redis, нужно ли отключать кэш файловой системы или лучше оставить? (имею сейчас по одному экземпляру на файловую систему и Redis)
В ответ на Сергей Жирнов

Re: Мудл сломал сам себя

от Николай Козловский -
А не могло получиться, что во время синхронизации блокировался доступ к базе данных. Файл создавался, но в базе его нет.
Я бы попробовал найти файл на диске и его запись в таблице mdl_files.
Поле contenthash - имя файла, содержит в первых 4х символах путь к папке
В ответ на Сергей Жирнов

Re: Мудл сломал сам себя

от Сергей Жирнов -
Спустя неделю работы ошибка снова вернулась. Мудл не обновлялся, настройки не изменялись. Просто с утра начал снова выдавать данную ошибку при синхронизации LDAP. Подскажите пожалуйста, куда копать.

P.S. Moodle 3.9.2+ сделал как говорили фикс с удалением конфига moodledata, спасло только на неделю.
В ответ на Сергей Жирнов

Re: Мудл сломал сам себя

от Николай Козловский -
Тут надо понять, проблема с записью в базу, или с каким-то ограничением сервера по числу операций
Стоит попробовать сразу сохранить ссылки на файлы из ответа студента и потом попробовать их открыть, когда они пропадут.
Так можно будет понять, где нарушена цепочка. Если откроется, значит с пользователем проблема, если нет то с элементами курса (pluginfile.php судя по путям в ссылках связан с элементами курса).
Еще может у сервера кончиться какой либо лимит связанный с числом файловых операций. Тут може могут быть варианты.
В ответ на Николай Козловский

Re: Мудл сломал сам себя

от Сергей Жирнов -
с записью файлов проблем не имеется (в данный момент с 12 числа всё сохраняется стабильно), проблема заключается сейчас в появлении ошибки:" Записи пользователей, которые будут добавлены: 9!!! Исключение - Call to undefined method cachestore_dummy::find_by_prefix() !!!". Как я понял, что это из-за конфига мудлдаты от старых версий, однако конфиг я уже обновлял, но почему-то он снова выдал попытку вызова несуществующей функции. Снова обновил конфиг и снова всё работает, однако теперь не особо уверен, что эта ошибка ушла на совсем.