[Системное администрирование, PHP, MySQL, Учебный процесс в IT] Разгоняем портал ДО на основе Moodle (решение проблем узких мест)

Автор Сообщение
news_bot ®

Стаж: 6 лет 3 месяца
Сообщений: 27286

Создавать темы news_bot ® написал(а)
15-Фев-2021 15:32


В последнее время все острее встает вопрос об обучении онлайн, во время пандемии, так и в связи с переходом в онлайн всего и вся. На сайте Хабр есть материалы по установке базовой системы на основе moodle. В данной заметке хотелось бы поделиться некоторым опытом настройки сервера для продакшен использования (речь пойдет о настройке ПО, без кластеризации и изменения железной конфигурации), для случая когда портал работает уже с некоторой нагрузкой. Примеры приведены для разрешения проблем узких мест из-за которых портал может работать с невысокой производительностью. 1. Apache mod XSEND FilesОписание приводится на страничке документации, нужно это т.к. moodle выдает статические файлы, в соответствии с правами доступа к ним, динамически. Такого рода дополнения могут прилично увеличить производительность. Почитать подробнее про X-Sendfile можно в статье.Включается эта опция в конфиге Apache2 - указываем каталог с moodle data
XSendFile On
XSendFilePath /data/localcache/
XSendFilePath /data/filedir/
2. Использование php-fpmДанная рекомендация подходит для всех более-менее значимых проектов под LAMP.Увеличивать можно из базовых параметров: количество подключений, максимальное число процессов запущенных и простаивающих для сервера и т.д.Например, для конфига службы fpm/pool.d/www.conf
pm.max_children = 20
pm.start_servers = 10
3. Изменение базовых значений php.iniЗдесь важным параметром является max_input_vars (должен быть увеличен). Система не сможет делать архивы для больших курсов и разворачивать их, так же сторонние модули с большим числом параметров не смогут правильно работать. Аналогично следует увеличить размеры лимитов для работы с файлами, например, МАХ размер загрузки файла на курс, максимального числа загружаемых файлов в систему одновременно.
max_input_vars = 1000000
upload_max_filesize = 512M
max_execution_time = 600
memorylimit = 512M
post_max_size = 512M
max_input_time = 300
В официальной документации moodle рекомендуетсядля продакшен использовать под Linux , а в ней меньше проблем с оптимизацией и кешированием у php. Настоятельно рекомендуется использовать модули по типу opcache в системе. Memcached нужно осторожно использовать (или отказаться вовсе) т.к. в системе могут происходить значительные изменения контента преподавателями и они не сразу могут отображаться корректно как для слушателей, так и для преподавателей.5. Использование внутреннего почтовикаДля работы moodle необходимо настроить работу с почтовой системой. Часто из-за того что почтовый сервер внешний, то письма к нему могут приходить не сразу, просто теряться(из-за таймаутов). Так же скрипты которые выполняют рассылку могут подвесить систему. Решением такой проблемы может быть развертывание почтового сервера с пересылкой писем на внешний сервер.Документации о работе почтового сервера в режиме пересылки(Relay) много официальной, например, для Postfix.Простой пример настройки опции - файл transport* smtp:my.pochta.ru6. Mysql тюнингМожет быть полезен, если для установки мудла использовался сервер MYSQL. Многие пишут что MYSQL из коробки идет с минимальными настройками, но информации по оптимизации БД много в сети. Могу посоветовать использовать утилиту mysqltunner. Из базовых проблем без настройки гибкой БД - могут не выполняться запросы с выводом большого числа строк для отчетов, страницы со списками пользователей.
query_cache_size = 16M
innodb_buffer_pool_size = 3500M
tmp_table_size = 68M
max_heap_table_size = 68M
join_buffer_size = 256K
table_open_cache =400
В мудле, в административной панели, можно задать пути для системных приложений(таких как du). При выполнении сценариев они могут быть использованы - это значительно увеличит скорость выполнения сценариев в системе. Подробнее в https://docs.moodle.org/310/en/System_paths8. Обслуживание системыРабота системы в стеке LAMP должна быть гармоничной :) потому не нужно забывать следить за тем как выполняется скрипт планировщика(без ошибок). Проблемы могут быть с правами на файловой системе или в модулях - в этом случае крон может не выполниться полностью, и системе не выполнятся задачи по рассылке писем, удалению старых данных (логов, конвертаций документов и тд.).Так же можно выполнять [url=https://docs.moodle.org/310/en/Performance_recommendations#MySQL performance]оптимизацию таблиц БД.[/url] В официальной документации про это много написано. Если такого рода опыт полезен, то готов поделиться еще по смежным темам в области разработки - сопровождения порталов moodle или дистанционного обучения.Всем успехов в работе!Ведущий инженер Центра открытого образования СПбПУ.
===========
Источник:
habr.com
===========

Похожие новости: Теги для поиска: #_sistemnoe_administrirovanie (Системное администрирование), #_php, #_mysql, #_uchebnyj_protsess_v_it (Учебный процесс в IT), #_moodle, #_lamp, #_php, #_mysql, #_optimization, #_edu, #_sistemnoe_administrirovanie (
Системное администрирование
)
, #_php, #_mysql, #_uchebnyj_protsess_v_it (
Учебный процесс в IT
)
Профиль  ЛС 
Показать сообщения:     

Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы

Текущее время: 20-Май 20:27
Часовой пояс: UTC + 5