Настроить максимальную производительность moodle

Содержание
  1. Разгоняем портал ДО на основе Moodle (решение проблем узких мест)
  2. 1. Apache mod XSEND Files
  3. 2. Использование php-fpm
  4. 3. Изменение базовых значений php.ini
  5. 5. Использование внутреннего почтовика
  6. 6. Mysql тюнинг
  7. 8. Обслуживание системы
  8. Настроить максимальную производительность moodle
  9. Правильно настроил cron для Moodle
  10. Оптимизация таблиц базы данных в PHPMyAdmin
  11. Ускоряем (оптимизируем) Apache
  12. Настройка производительности Moodle
  13. 3 ответов
  14. Documentation
  15. Содержание
  16. Что подразумевается «под одновременными пользователями»?
  17. Как оценить производительность Moodle-сайта?
  18. Что такое PHP-акселератор?
  19. Как сделать Moodle-кластер?
  20. Мой сайт работает медленно, что я должен делать?
  21. Какая операционная система лучше?
  22. Какой лучше вебсервер?
  23. Documentation
  24. Содержание
  25. Оценка базовой производительности
  26. Масштабируемость
  27. Конфигурация аппаратного обеспечения
  28. Операционная система
  29. Производительность веб-серверов

Разгоняем портал ДО на основе Moodle (решение проблем узких мест)

В последнее время все острее встает вопрос об обучении онлайн, во время пандемии, так и в связи с переходом в онлайн всего и вся. На сайте Хабр есть материалы по установке базовой системы на основе moodle. В данной заметке хотелось бы поделиться некоторым опытом настройки сервера для продакшен использования (речь пойдет о настройке ПО, без кластеризации и изменения железной конфигурации), для случая когда портал работает уже с некоторой нагрузкой. Примеры приведены для разрешения проблем узких мест из-за которых портал может работать с невысокой производительностью.

1. Apache mod XSEND Files

Описание приводится на страничке документации, нужно это т.к. moodle выдает статические файлы, в соответствии с правами доступа к ним, динамически. Такого рода дополнения могут прилично увеличить производительность. Почитать подробнее про X-Sendfile можно в статье.

Включается эта опция в конфиге Apache2 — указываем каталог с moodle data

2. Использование php-fpm

Данная рекомендация подходит для всех более-менее значимых проектов под LAMP.

Увеличивать можно из базовых параметров: количество подключений, максимальное число процессов запущенных и простаивающих для сервера и т.д.

Например, для конфига службы fpm/pool.d/www.conf

3. Изменение базовых значений php.ini

Здесь важным параметром является max_input_vars (должен быть увеличен). Система не сможет делать архивы для больших курсов и разворачивать их, так же сторонние модули с большим числом параметров не смогут правильно работать. Аналогично следует увеличить размеры лимитов для работы с файлами, например, МАХ размер загрузки файла на курс, максимального числа загружаемых файлов в систему одновременно.

В официальной документации moodle рекомендуется для продакшен использовать под Linux , а в ней меньше проблем с оптимизацией и кешированием у php. Настоятельно рекомендуется использовать модули по типу opcache в системе. Memcached нужно осторожно использовать (или отказаться вовсе) т.к. в системе могут происходить значительные изменения контента преподавателями и они не сразу могут отображаться корректно как для слушателей, так и для преподавателей.

5. Использование внутреннего почтовика

Для работы moodle необходимо настроить работу с почтовой системой. Часто из-за того что почтовый сервер внешний, то письма к нему могут приходить не сразу, просто теряться(из-за таймаутов). Так же скрипты которые выполняют рассылку могут подвесить систему. Решением такой проблемы может быть развертывание почтового сервера с пересылкой писем на внешний сервер.

Документации о работе почтового сервера в режиме пересылки(Relay) много официальной, например, для Postfix.

Простой пример настройки опции — файл transport

6. Mysql тюнинг

Может быть полезен, если для установки мудла использовался сервер MYSQL. Многие пишут что MYSQL из коробки идет с минимальными настройками, но информации по оптимизации БД много в сети. Могу посоветовать использовать утилиту mysqltunner.

Из базовых проблем без настройки гибкой БД — могут не выполняться запросы с выводом большого числа строк для отчетов, страницы со списками пользователей.

7. Использование системных утилит

В мудле, в административной панели, можно задать пути для системных приложений(таких как du). При выполнении сценариев они могут быть использованы — это значительно увеличит скорость выполнения сценариев в системе. Подробнее в https://docs.moodle.org/310/en/System_paths

8. Обслуживание системы

Работа системы в стеке LAMP должна быть гармоничной 🙂 потому не нужно забывать следить за тем как выполняется скрипт планировщика(без ошибок). Проблемы могут быть с правами на файловой системе или в модулях — в этом случае крон может не выполниться полностью, и системе не выполнятся задачи по рассылке писем, удалению старых данных (логов, конвертаций документов и тд.).

Читайте также:  Случайно сегодня не работаешь

Так же можно выполнять оптимизацию таблиц БД. В официальной документации про это много написано.

Если такого рода опыт полезен, то готов поделиться еще по смежным темам в области разработки — сопровождения порталов moodle или дистанционного обучения.

Всем успехов в работе!

Ведущий инженер Центра открытого образования СПбПУ.

Источник

Настроить максимальную производительность moodle

Дошли руки до Moodle и сервера, на котором он расположен, точнее вынудили обстоятельства. Moodle начал очень сильно тормозить , это на двух процессорах E5440, из которых выделено 80% на виртуальную маши. При обращении более 10 пользователей MySQL грузил все 8-мь ядер на 100% в течении 10 минут. Чего делал:

Правильно настроил cron для Moodle

После установки Moodle, в папке, вы найдете /admin/cron.php , который должен регулярно запускаться в фоновом режиме. Вы должны правильно настроить в процессе установки и настройки, но. если вы переносите Moodle на другой сервер или хостинг — об этой настройке можно забыть.

cron.php запускает отправку почты, обновление отчетов Moodle, RSS-каналов, завершение действий, размещение сообщений на форуме и другие задачи.

По сути, все дело состоит в том, чтобы добавить одну команду в список операций cron в вашей системе. В системах на основе Unix этот список представляет собой файл под названием «crontab», который есть у всех пользователей.

Очень много споров и обсуждений на тему правильной настройки cron для Moodle, но как по мне — все однозначно описано в документации, рассмотрены все возможные варианты для всех типов ОС. Сервер, наш, Ubuntu 16 лучше всего выполнить следующий порядок действий:

запустить команду crontab -e и в файле добавить строку */15 * * * * /usr/bin/wget http://site.ru/moodle/admin/cron.php /которая будет запускать cron каждые 15 минут. Есть побочный эффект — в папке пользователя, со временем, будет очень много файлов типа cron.php.xxx, но они показывают, что cron работает))) Если такой расклад вас не устраивает — используйте (рекомендуется) */15 * * * * /usr/bin/php /path/to/moodle/admin/cli/cron.php >/dev/null

Оптимизация таблиц базы данных в PHPMyAdmin

Оптимизация таблиц или дефрагментация индексов таблиц необходима, так как в базе данных Moodle постоянно добавляются и удаляются данные (записи). Проще говоря оптимизация таблиц БД позволяет убрать «пустые» ключи, тем самым ускоряя в будущем операции выборки, а так же уменьшает общий размер базы данных.

Чтобы выполнить оптимизацию таблиц в phpMyAdmin необходимо:

  • Нажимаем на пункт «Базы данных» в верхнем меню, или в окне слева выбираем нашу БД, щелкая по ней.
  • Нам буде показан список всех таблиц БД. Теперь прокручиваем список в самый низ, нажимаем «Отметить все» и после этого из выпадающего списка «С отмеченными» выбрать «Оптимизировать таблицу».
  • После успешной оптимизации вы увидите сообщение «SQL-запрос успешно выполнен».

Рекомендуется хотя бы раз в месяц проводить дефрагментацию таблиц на таких сайтах как электронные магазины, форумы, блоги.

В моем случае, общий размер таблиц базы данных уменьшился с 253,5Mb до 204,3Mb.

Ускоряем (оптимизируем) Apache

Включает кэш браузера. Установим модуль Apache mod_expires или mod_headers командами (оба модуля использовать ни к чему):

sudo a2enmod expires

или

sudo a2enmod headers

перезагрузим сервер Apache:

sudo service apache2 reload

Я использовал модуль expires и в файл .htaccess добавил:

ExpiresActive On
ExpiresDefault «access plus 1 day»
ExpiresByType application/javascript «access plus 1 week»
ExpiresByType image/x-icon «access plus 1 month»
ExpiresByType image/gif «access plus 1 month»
ExpiresByType image/png «access plus 1 month»
ExpiresByType image/jpg «access plus 1 month»
ExpiresByType image/jpeg «access plus 1 month»
ExpiresByType text/css «access plus 1 month»

Если вы будите использовать headers в файл .htaccess нужно добавить:

#10_min

Header set Cache-Control «max-age=600, must-revalidate»

#1_week

Header set Cache-Control «max-age=604800, public»

#1_month

Header set Cache-Control «max-age=2592000, public»

Читайте также:  Kitfort паровой пылесос не работает пар

Об этом можно прочесть здесь

Рекомендуется включить сжатие ответов Apache средствами модуля mod_deflate, в файл .htaccess добавляем:

AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE text/css

BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html

Источник

Настройка производительности Moodle

наш сайт Moodle начинает получать интенсивный трафик. В результате, сайт замедляется. Какие параметры я должен проверить сразу при настройке производительности мудло? Я знаю, что это специфично для этого сайта, поскольку другие на нем не имеют проблем с большими рабочими нагрузками.

3 ответов

на веб-сайте Moodle у них есть обширный настройки производительности веб-страницы. у меня есть список из нескольких предложений, которые выглядят интересными:

  • если вы идете в:http://YOURSERVERNAME.com/admin/dbperformance.php, moodle даст некоторую статистику производительности.
  • рассмотрите возможность добавления дополнительной ОЗУ или кластеризации вашего веб-сервера.
  • рассмотрите возможность добавления ускорителя php, такого как APC, PHPA, Xcache или eAccelerator.
  • попробуйте определить, является ли веб-сервер или сервер базы данных узким местом.

пользователь moodle также разработал хороший сценарий нагрузочного тестирования (этот скрипт очень тяжелый и скажет вам максимальную нагрузку, которую может обрабатывать ваш сервер). Его можно найти здесь.

добавление APC php accelerator увеличило производительность нашего сервера на 250% до 300%. немедленно (удивительно!) мы используем CentOS 5.4, поэтому это было только» yum install php-apc » (легко)

мы также использовали mysqltuner.pl (blog.mysqltuner.com/) для настройки параметров сервера MySQL. трудно сказать, сколько мы здесь выиграли. так лучше.

меняем MySQL internal DB Engine для таблицы mdl_user с MYISAM to InnoDB после того, как мы достигли 12000 пользователей (теперь у нас есть 16000), это дало огромный позитив воздействие на связанные запросы mdl_user. (пример: загрузка 600 новых пользователей теперь занимает 1 мин, где раньше 12 мин. огромное улучшение!)

Используйте «Универсальный Кэш Moodle». Это ускоряет moodle в определенной степени. Эта функция доступна moodle 2.4 и далее. Вот официальная документация ссылка http://docs.moodle.org/24/en/Caching

вы также можете попробовать использовать memcached с moodle.Хотя не прямо из коробки доступны, но memcache является одним из стандартных способов использования ОЗУ для ускорения доступа к базе данных.

Источник

Documentation

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

Содержание

Что подразумевается «под одновременными пользователями»?

Как уже неоднократно подчеркивалось на форуме производительности оборудования, нагрузка на сервер зависит прежде всего от количества одновременных пользователей, а не от общего числа пользователей и не числа пользователей, авторизовавшихся в на данный момент времени. В этом контексте одновременные пользователи — это те пользователи, для которых сервер активно что-то делает. Это может быть обработка веб-страницы, написанной на PHP, запросы к базе данных или просто передача файлов.

Как оценить производительность Moodle-сайта?

Можно, конечно, тестировать каждый компонент программного обеспечения: операционную систему, веб-сервер, сервер баз данных, PHP. Но нет простой формулы, чтобы посчитать максимальное количество одновременных пользователей из этих результатов. Существует PHP-скрипт, циркулирующий среди Moodle-сообщества, который рассчитывает примерную цифру. Текущая версия прилагается к сообщению, на 1. Март 2007.

Предупреждение: Обратите внимание, что запуск этого сценария на сервере может иметь нежелательные побочные эффекты. Мы настоятельно рекомендуем, чтобы запуск проводился на тестовом сервере.

Что такое PHP-акселератор?

Можно посмотреть в Википедии.

Как сделать Moodle-кластер?

Мой сайт работает медленно, что я должен делать?

Во-первых надо определить как тормозит. Во-вторых надо понять является ли медленная работа «нормальной» или это следствие какой-либо неисправности. Существует множество неисправностей:

  • Повреждение аппратного обеспечения
  • Повреждения файловой системы, неправильная работа сетевой файловой системы
  • Утечка памяти и другие сбои в системе
  • Глюк в Moodle
  • Повреждение базы данных

Если в работе сервера не выявлено неисправностей необходимо выяснить следующие моменты:

  • Какой сервер используется — выделенный или виртуальный?
  • Какой объем оперативной памяти, какова мощность процессора?
  • Какое ПО вы используете (Unix или Windows, Apache или nginx, MySQL, PostgreSQL or SQL-Server, . )?
  • Какое количество одновременных пользователей замедляет работу?
  • Какие модули/задания вы используете? Можно посмотреть в Производительность#Производительность различных модулей Moodle
  • Нет ли у вас проблем в сети(DNS, Firewalls)? Кроме того следует проверить не совершается ли на вас атака.
Читайте также:  Как настроить часы chaowei cw8055

Какая операционная система лучше?

Та, которую вы лучше знаете.

Какой лучше вебсервер?

Для новичков — Apache, опытным администратором я бы посоветовал обратить внимание на nginx.

Источник

Documentation

Содержание

Оценка базовой производительности

Прежде чем производить какую-либо оптимизацию, вам необходимо получить базовые характеристики компонентов системы, которые вы пытаетесь улучшить. Для Linux можно попробовать LBS, для Windows использовать системный монитор. После того как вы получите количественные данные о том, как ваша система настроена настоящее время, вы сможете определить, оказывают ли какое-либо реальное воздействие внесенные изменения. Основной идеей для повышения производительности является использование ресурсов ОЗУ(кеширование), а также уменьшение обращений к дисковой подсистеме. Особенно важно сократить использование файла подкачки настолько, насколько это возможно. Если ваша система начинает интенсивно использовать файл подкачки, это признак того, что вам нужно больше ОЗУ. Для увеличения производительности предпочтительно улучшение оперативной памяти(увеличение ее объема), вторичной памяти (более вместительные жесткие диски / улучшенной конфигурации жестких дисков / использование RAID), процессора (большее кол-во, более мощные).

Масштабируемость

Конфигурация аппаратного обеспечения

Примечание: Самый быстрый и эффективный путь которым вы можете повысить производительность является наращивание объема оперативной памяти на вашем веб-сервере. Расширение основной памяти позволит снизить потребность процессов в файле подкачки и позволит вашему серверу обслуживать большее количество пользователей.

  • Более высокая производительность достигается путем расширения ресурсов процессора, т.е. установка большего числа процессоров или использование многоядерных процессоров. Также следует обратить внимание то какие инструкции поддерживает процессор и.т.д.
  • Если вы можете себе позволить, используйте жесткие диски SCSI, а не диски SATA. SATA диски повышают нагрузку на процессор в вашей системе, в то время как SCSI диски имеют свои собственные процессоры и используют их для взаимодействия, если таковых дисков несколько. Если вы работаете с SATA дисками, убедитесь, что ваша материнская плата и диски имеют поддержку NCQ (Native Command Queuing).
  • Покупайте жесткие диски с низким временем поиска, они позволят повысить общую скорость работы системы.
  • Устанавливайте правильный размер файла подкачки. В общем случае его надо установить равным 4-м объемам оперативной памяти.
  • Используйте RAID-массивы. Существует множество различных конфигураций RAID, но следующие обычно работают лучше всего:
    • Используйте аппаратный RAID(Если вам позволяют средства).
    • Операционную систему и файл(раздел) подкачки лучше хранить на одном наборе дисков, настроенных как RAID-1.
    • Moodle, веб-сервер, сервер базы данных и прочую информацию лучше хранить на наборе дисков настроенных как RAID-5.
  • Используйте Gigabit Ethernet для уменьшения задержки и увеличения пропускной способности. Это особенно важно, когда у вас веб-сервер и сервер базы данных работают на разных серверах.
  • Проверьте настройки сетевой карты. Вы можете получить увеличение производительности за счет использования встроенных возможностей сетевой карты, к примеру, разгрузить процессор от вычисления контрольной суммы пакета и перенести эту функцию на встроенный процессор на катрочке.

Операционная система

  • Вы можете использовать Linux (рекомендуется), Unix-based (FreeBSD, Solaris и.т.д.), Windows или Mac OS X для серверной операционной системы. *nix системы как правило, для той же задачи требуют меньше памяти, чем Mac OS X или Windows. Кроме того Linux не требует лицензионных отчислений, но может потребоваться обучение, если вы используете другую операционную систему.
  • Желательно чтобы вы ознакомились с рекомендациями по оптимизации вашей ОС
    • Для Linux вы можете заглянуть на сайт Linux Performance Team.
    • Для Windows можно заглянуть на Microsoft TechNet.

Производительность веб-серверов

Установите Firefox с дополнением firebug, оно позволит вам следить за временем, которое требуется для загрузки каждой страницы и ее отдельных компонетов. Также вам может помочь дополнение Page Speed.

Источник

Оцените статью