Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да сравните производителността на Moodle

Moodle, най-популярната в света система за управление на обучението (LMS), обикновено се внедрява в бързо развиваща се и широкомащабна среда. За щастие, Moodle е създаден с мисъл за наличност и мащабируемост, с много инструменти, за да ни помогне да управляваме голяма инфраструктура. Широкомащабните инфраструктури на Moodle могат да бъдат настроени на различни типове машини, от гол метал до разделени виртуални контейнери (или Kubernetes Pods) и обикновено включват многостепенна архитектура за отделни балансатори на натоварване, уеб сървъри, кеш сървъри, централизирани/клъстерни сървъри за съхранение и сървъри на база данни.

В тази публикация в блога ще ви покажем как да извършите сравнителен анализ на вашия сайт Moodle, който ще ни позволи да разберем как се представя нашия сайт Moodle за даден период от време. При клъстерна настройка производителността на клъстер на Moodle може да бъде повлияна от различни фактори като хардуерни ресурси, режийни разходи за виртуализация, мрежови латентности между сървърите, защитни стени, кеширане и много други, а извършването на сравнителни показатели е солиден начин за тестване и оценка на производителността на Moodle преди да влезе в производство.

Приставка за сравнителен анализ на отчети

На първо място, добре е да имаме наземно разбиране, когато нашата настройка не работи, а също и в среда с голямо натоварване. Силно препоръчително е да инсталирате приставката Report Benchmark за Moodle, която извършва различни тестове, за да определи качеството на платформата Moodle с помощта на система за оценяване. Този резултат сравнява вашата система и скорост с някои прагови стойности (приемливи и критични), точно като следната екранна снимка:

След като плъгинът е инсталиран, отидете на Администриране на сайта -> Отчети -> Бенчмарк -> Стартиране на бенчмарка за изпълнение на бенчмарка. Тестовете за сравнение трябва да продължат по-малко от 1 минута и ще бъдат прекратени на 2 минути независимо, разкривайки дали има притеснения във вашата платформа. Колкото по-нисък е резултатът, толкова по-добре и ако всичко е зелено, това обикновено показва, че нашият Moodle сайт трябва да е в добра форма. Основно има 5 тестови групи:

  • Скорост на сървъра
  • Скорост на процесора
  • Скорост на твърдия диск
  • Скорост на базата данни
  • Скорост на зареждане на страницата

В случаите, когато Moodle се държи по-бавно от очакваното, ще видите някои незелени полета да се появяват в отчета за сравнителния анализ, както е показано в следния пример:

По-нататък в отчета можете да получите обобщението на бенчмарка. В горния случай направихме инструмент Apache Benchmark (ab) за стрес тест на уебсайта с 20 едновременни потребителски връзки и едновременно да стартираме този отчет за сравнителния анализ и да наблюдаваме производителността на Moodle. Обобщената обосновка, въпреки че е доста широка в аспектите на настройката, може да ни помогне да стесним областта, която се нуждае от подобрение, като оптимизация на база данни, кеш на Moodle и хардуерни ресурси.

Препоръчва се този тест за сравнителен тест да се извърши няколко пъти, за да се получи значителна средна стойност. Ако производителността на вашата инсталация не е оптимална, ще намерите някои препоръки за подобряването й в документацията на Moodle. Не изпълнявайте този бенчмарк на производствена платформа по време на активни часове, тъй като това може да доведе до значително влошаване на производителността.

Apache JMeter

Apache JMeter е Java приложение, предназначено да зарежда тестово функционално поведение и да измерва производителността на статични и динамични уеб приложения. Може да се използва за симулиране на голямо натоварване на сървър, група сървъри, мрежа или обект, за да се тества неговата здравина или да се анализира цялостната производителност при различни видове натоварване.

От Moodle v2.5 и по-нови версии, той идва с генератор на тестови планове на JMeter, за да опрости процеса на тестване на натоварване с JMeter чрез два вградени скрипта – „Направи тестов курс“ и „Направи тестов план на JMeter“, и двата достъпни под Администриране на сайта -> Разработка , допълнено от набор от добавки за сравнение на производителността на Moodle. За да използвате тази функция чрез уеб интерфейса на Moodle, трябва да превключите Moodle в режим на програмист под Администриране на сайта -> Разработка -> Отстраняване на грешки -> Съобщения за отстраняване на грешки -> РАЗРАБОТЧИК:допълнителни съобщения за отстраняване на грешки в Moodle за разработчици . В противен случай използвайте CLI инструментите, налични в директорията {Moodle}/admin/tool/generator/cli.

Имайте предвид, че тестът JMeter не трябва да се извършва на производствена система. Скриптовете на тестовия план генерират данни и умишлено натоварват сървъра до неговия лимит и отвъд, като често го правят претоварен и не реагира. Дори не ги стартирайте на отделен екземпляр на Moodle в производствения сървър, като се свързвате със същата производствена база данни, тъй като това ще повлияе директно на производителността.

Разгръщане на сървъра JMeter

За да опростим инструкциите, ние изпълняваме всички наши команди като root потребител. На сървъра JMeter инсталирайте всички необходими пакети:

$ sudo apt install apache2 mysql-client mysql-server php libapache2-mod-php graphviz aspell ghostscript clamav php7.4-pspell php7.4-curl php7.4-gd php7.4-intl php7.4-mysql php7.4-xml php7.4-xmlrpc php7.4-ldap php7.4-zip php7.4-soap php7.4-mbstring

Създайте привилегирован потребител на MySQL, който да се използва от инструмента за сравнение на производителността на Moodle. Не е необходимо първо да създавате база данни:

$ mysql -uroot -p
mysql> CREATE USER 'moodleperformance'@'localhost' IDENTIFIED BY 'mys3cret';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'moodleperformance'@'localhost';
mysql> exit

Създайте корен на данни и директория за архивиране:

$ mkdir /var/moodledata
$ chmod -R 777 /var/moodledata
$ mkdir /root/backups

Инсталиране на Java:

$ apt update
$ apt install default-jre

Изтеглете Apache JMeter от официалния сайт и го съхранете в директория /opt:

$ wget https://downloads.apache.org//jmeter/binaries/apache-jmeter-5.4.tgz
$ tar -xzf apache-jmeter-5.4.tgz -C /opt

Вземете инструмента за сравнение на производителността на Moodle от Github и го поставете под основния корен на документа по подразбиране на уеб сървъра на Apache в /var/www/html, както и копирайте конфигурационните файлове от техните шаблони:

$ cd /var/www/html
$ git clone https://github.com/moodlehq/moodle-performance-comparison
$ cd moodle-performance-comparison
$ cp webserver_config.properties.dist webserver_config.properties
$ cp jmeter_config.properties.dist jmeter_config.properties

Отворете jmeter_config.properties и редактирайте следния ред:

jmeter_path=/opt/apache-jmeter-5.4

Изпълнение на тестовия план на JMeter

Най-простият начин да стартирате бенчмарк на Moodle с помощта на този инструмент е да стартирате локален бенчмарк на Moodle, където скриптовете автоматично ще изтеглят приложението Moodle от Github, ще настроят базата данни и ще зададат необходимите конфигурации за локална среда за тестване. Това, което трябва да направим, е да посочим следното в webserver_config.properties:

dbtype="mysqli"
dbhost="localhost"
dbuser="moodleperformance"
dbpass="mys3cret"
wwwroot="http://18.141.187.189/moodle-performance-comparison/moodle"
dataroot="/var/moodledata"
backupsdir="/root/backups"

Където 18.141.187.189 е публичният IP адрес на този сървър на JMeter. Moodle, който ще бъде бенчмаркиран, е достъпен на адрес http://18.141.187.189/moodle-performance-comparison/moodle . След като горното е конфигурирано, отворете /var/www/html/moodle-performance-comparison:

$ cd /var/www/html/moodle-performance-comparison

Първото нещо е да таксувате тестовия сайт на Moodle с набор от данни. Размерът на сайта на Moodle може да се определи от следното:

Размер

План за тестване

XS

1 потребител, 5 цикъла и 1 период на нарастване

S

30 потребители, 5 цикъла и 6 периода на нарастване

M

100 потребители, 5 цикъла и 40 периода на нарастване

L

1000 потребители, 6 цикъла и 100 периода на нарастване

XL

5000 потребители, 6 цикъла и 500 периода на нарастване

XXL

10000 потребители, 7 цикъла и 800 периода на нарастване

И стартирайте скрипта before_run_setup.sh, за да създадете сайт на Moodle с размер XS:
$ ./before_run_setup.sh XS
mysql: [Warning] Using a password on the command line interface can be insecure.
mysql: [Warning] Using a password on the command line interface can be insecure.
mysql: [Warning] Using a password on the command line interface can be insecure.

#######################################################################
Installing Moodle (ec58cefefb2722f61f77c9a2b6a12d40a8c078a0)

Moodle site configuration finished successfully.
Creating Moodle (ec58cefefb2722f61f77c9a2b6a12d40a8c078a0) database and dataroot backups
mysqldump: [Warning] Using a password on the command line interface can be insecure.

Upgrading Moodle (ec58cefefb2722f61f77c9a2b6a12d40a8c078a0) to master

#######################################################################
'Before' run setup finished successfully.

Note the following files were generated, you will need this info when running
testrunner.sh in a different server, they are also saved in test_files.properties.
- Test plan: /var/www/html/moodle-performance-comparison/moodle/testplan.jmx
- Test users: /var/www/html/moodle-performance-comparison/moodle/testusers.csv
- Dataroot backup: /root/backup/dataroot_backup_202101090901
- Database backup: /root/backup/database_backup_202101090901.sql

Now you can:
- Change the site configuration
- Change the cache stores
And to continue with the test you should:
- Run restart_services.sh (or manually restart web and database servers if
  this script doesn\'t suit your system)
- Run test_runner.sh

Преди да започнем бенчмарка, се препоръчва да рестартирате уеб сървърите и сървърите на бази данни, за да получим добър основен резултат:

$ ./restart_service.sh
#######################################################################
Services restarted successfully.

Now you can begin running the tests with test_runner.sh.

Сега сме готови да стартираме бенчмарка на JMeter с помощта на скрипт test_runner.sh:

$ ./test_runner.sh Group1 Run1
#######################################################################
Test running... (time for a coffee?)

Jan 09, 2021 9:03:55 AM java.util.prefs.FileSystemPreferences$1 run
INFO: Created user preferences directory.

Warning: Nashorn engine is planned to be removed from a future JDK release

#######################################################################
Test plan completed successfully.

To compare this run with others remember to execute after_run_setup.sh before
it to clean the site restoring the database and the dataroot.

Сега завършихме първото си изпълнение и се представихме на обикновен сайт на Moodle. В този момент можете да извършите каквато и да е настройка на производителността и настройване на вашия сървър на база данни, PHP, уеб сървър на Apache или всякакви други компоненти, свързани с Moodle, и да стартирате второто изпълнение, за да сравните дали приложената настройка има смисъл. Преди да направим втория бенчмарк, трябва да изпълним скрипта after_run_setup.sh, за да подготвим и почистим тестовия сайт на Moodle, където скриптът ще възстанови базата данни и корена на Moodle:

$ ./after_run_setup.sh

Сега сме готови да изпълним втория бенчмарк:

$ ./test_runner.sh Group1 Run2
#######################################################################
Test running... (time for a coffee?)

Jan 09, 2021 9:03:55 AM java.util.prefs.FileSystemPreferences$1 run
INFO: Created user preferences directory.

Warning: Nashorn engine is planned to be removed from a future JDK release

#######################################################################
Test plan completed successfully.

To compare this run with others remember to execute after_run_setup.sh before
it to clean the site restoring the database and the dataroot.

Резултати от сравнителния анализ


Резултатите от сравнителния анализ трябва да се покажат и достъпни на http://18.141.187.189/moodle-performance-comparison/ . Следната екранна снимка на цялата страница е пример за резултати, които бихте получили:

Сравнението ни позволява да разберем кои аспекти или компоненти на сайта на Moodle са били подобрени между стартиранията. Добре е да извършите сравнителния тест няколко пъти, за да получите значителна средна стойност, преди в крайна сметка да вземете решение дали дадена настройка е довела до добри или лоши резултати на сайта на Moodle.

Има много други начини за изпълнение на бенчмарка на JMeter, както е описано тук. Можете да стартирате бенчмарка директно в сайта на живо (не се препоръчва) или да поставите локалния тестов сайт на Moodle с данните от производството, като използвате резервното копие на производствената база данни и директорията moodledata, или също да стартирате бенчмарка локално срещу множество версии на Moodle инсталация, за да сравни печалбата или загубата на производителност за всяка версия.
  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да създадете база данни в MySQL

  2. Свържете се с отдалечен MySQL сървър с SSL от PHP

  3. Търсене със стойност, разделена със запетая, mysql

  4. Колона за промяна на таблицата на MySQL

  5. SQLSTATE[HY093]:Невалиден номер на параметър:параметърът не е дефиниран