Moodle, světově nejpopulárnější systém pro řízení výuky (LMS), je běžně nasazován v rychle rostoucím a rozsáhlém prostředí. Naštěstí je Moodle sestaven s ohledem na dostupnost a škálovatelnost, se spoustou nástrojů, které nám pomohou spravovat velkou infrastrukturu. Rozsáhlé infrastruktury Moodle lze nastavit na různých typech počítačů, od holého kovu po dělené virtuální kontejnery (nebo Kubernetes Pods) a běžně by zahrnovaly vícevrstvou architekturu pro samostatné vyrovnávače zatížení, webové servery, servery mezipaměti, centralizované/klastrované servery úložiště a databázové servery.
V tomto příspěvku na blogu vám ukážeme, jak provést benchmark vašeho webu Moodle, který nám umožní porozumět výkonu našeho webu Moodle v daném časovém období. V clusterovém nastavení může být výkon clusteru Moodle ovlivněn různými faktory, jako jsou hardwarové zdroje, virtualizační režie, latence sítě mezi servery, firewally, mezipaměť a mnoho dalších, a provádění benchmarků je spolehlivý způsob, jak testovat a odhadovat výkon Moodle. před uvedením do provozu.
Plugin srovnávání přehledů
Nejprve je dobré rozumět zemi, když je naše nastavení nečinné a také v prostředí s vysokou zátěží. Důrazně se doporučuje nainstalovat zásuvný modul Report Benchmark pro Moodle, který provádí různé testy k určení kvality platformy Moodle pomocí bodovacího systému. Toto skóre porovnává váš systém a rychlost s určitými prahovými hodnotami (přijatelné a kritické), stejně jako následující snímek obrazovky:
Po instalaci pluginu přejděte na Administrace webu -> Reporty -> Benchmark -> Start benchmark provést benchmark. Srovnávací testy by měly trvat méně než 1 minutu a bez ohledu na to budou po 2 minutách přerušeny, což odhalí, zda jsou na vaší platformě nějaké starosti. Čím nižší skóre, tím lépe, a pokud je vše zelené, obecně to znamená, že naše stránky Moodle by měly být v dobrém stavu. V zásadě existuje 5 testovacích skupin:
- Rychlost serveru
- Rychlost procesoru
- Rychlost pevného disku
- Rychlost databáze
- Rychlost načítání stránky
V případech, kdy se Moodle chová pomaleji, než se očekávalo, uvidíte ve srovnávacím přehledu některá nezelená políčka, jak ukazuje následující příklad:
Dále v přehledu můžete získat shrnutí srovnávacího testu. Ve výše uvedeném případě jsme vytvořili nástroj Apache Benchmark (ab), abychom zátěžově otestovali web s 20 souběžnými uživatelskými připojeními a současně spustili tento benchmark report a sledovali výkon Moodle. Souhrnné zdůvodnění, přestože je v aspektech ladění dost široké, by nám mohlo pomoci zúžit oblast, která potřebuje zlepšení, jako je optimalizace databáze, mezipaměť Moodle a hardwarové zdroje.
Pro získání významného průměru se doporučuje provést tento srovnávací test několikrát. Pokud výkon vaší instalace není optimální, v dokumentaci Moodle naleznete některá doporučení pro jeho zlepšení. Nespouštějte tento benchmark na produkční platformě během aktivních hodin, protože by to mohlo vést k výraznému snížení výkonu.
Apache JMeter
Apache JMeter je aplikace Java navržená pro zátěžové testování funkčního chování a měření výkonu statických a dynamických webových aplikací. Lze jej použít k simulaci velkého zatížení serveru, skupiny serverů, sítě nebo objektu k testování jeho síly nebo k analýze celkového výkonu při různých typech zatížení.
Od verze Moodle v2.5 a novější přichází s generátorem testovacího plánu JMeter, který zjednodušuje proces zátěžového testování pomocí JMeter prostřednictvím dvou vestavěných skriptů – „Make test course“ a „Make JMeter test plan“, oba dostupné pod Správa webu -> Vývoj , rozšířené o sadu doplňků pro srovnání výkonu Moodle. Abyste mohli tuto funkci používat prostřednictvím webového rozhraní Moodle, musíte přepnout Moodle do Vývojářského režimu v části Administrace webu -> Vývoj -> Ladění -> Zprávy ladění -> VÝVOJÁŘ:další zprávy o ladění Moodle pro vývojáře . Jinak použijte nástroje CLI dostupné v adresáři {Moodle}/admin/tool/generator/cli.
Všimněte si, že test JMeter by neměl být prováděn na produkčním systému. Skripty testovacího plánu generují data a záměrně zatěžují server až na hranici jeho limitu a dále, čímž jej často přetíží a přestane reagovat. Nespouštějte je ani na samostatné instanci Moodle na produkčním serveru a připojujte se ke stejnému produkčnímu databázovému systému, protože to přímo ovlivní výkon.
Nasazení serveru JMeter
Pro zjednodušení pokynů provádíme všechny naše příkazy jako uživatel root. Na serveru JMeter nainstalujte všechny potřebné balíčky:
$ 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
Vytvořte privilegovaného uživatele MySQL, kterého bude používat nástroj pro porovnávání výkonu Moodle. Není nutné nejprve vytvořit databázi:
$ mysql -uroot -p
mysql> CREATE USER 'moodleperformance'@'localhost' IDENTIFIED BY 'mys3cret';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'moodleperformance'@'localhost';
mysql> exit
Vytvořte kořenový adresář dat a adresář záloh:
$ mkdir /var/moodledata
$ chmod -R 777 /var/moodledata
$ mkdir /root/backups
Instalovat Javu:
$ apt update
$ apt install default-jre
Stáhněte si Apache JMeter z oficiálních stránek a uložte jej do adresáře /opt:
$ wget https://downloads.apache.org//jmeter/binaries/apache-jmeter-5.4.tgz
$ tar -xzf apache-jmeter-5.4.tgz -C /opt
Získejte nástroj Moodle Performance Comparison od Github a umístěte jej pod výchozí kořen dokumentu webového serveru Apache na /var/www/html a také zkopírujte konfigurační soubory z jejich šablon:
$ 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
Otevřete soubor jmeter_config.properties a upravte následující řádek:
jmeter_path=/opt/apache-jmeter-5.4
Spuštění testovacího plánu JMeter
Nejjednodušší způsob, jak pomocí tohoto nástroje spustit benchmark Moodle, je spustit lokální benchmark Moodle, kde skripty automaticky vytáhnou aplikaci Moodle z Githubu, nastaví databázi a nastaví potřebné konfigurace pro místní testovací prostředí. Co musíme udělat, je zadat následující v souboru 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"
Kde 18.141.187.189 je veřejná IP adresa tohoto serveru JMeter. Moodle, který bude testován, je dostupný na adrese http://18.141.187.189/moodle-performance-comparison/moodle . Po nakonfigurování výše uvedeného přejděte na /var/www/html/moodle-performance-comparison:
$ cd /var/www/html/moodle-performance-comparison
První věcí je zaplatit testovacímu webu Moodle sadou dat. Velikost webu Moodle lze určit následovně:
Velikost | Testovací plán |
XS | 1 uživatel, 5 smyček a 1 období náběhu |
S | 30 uživatelů, 5 smyček a 6 náběhových period |
M | 100 uživatelů, 5 smyček a 40 náběhových period |
L | 1000 uživatelů, 6 smyček a 100 náběhových period |
XL | 5 000 uživatelů, 6 smyček a 500 náběhových period |
XXL | 10 000 uživatelů, 7 smyček a 800 náběhových period |
$ ./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
Před spuštěním benchmarku se doporučuje restartovat web a databázové servery, abychom získali dobrý základní výsledek:
$ ./restart_service.sh
#######################################################################
Services restarted successfully.
Now you can begin running the tests with test_runner.sh.
Nyní jsme připraveni spustit srovnávací test JMeter pomocí skriptu 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.
Nyní jsme dokončili první spuštění a dosáhli výkonu na obyčejném webu Moodle. V tomto okamžiku můžete provést jakékoli ladění výkonu a ladění vašeho databázového serveru, PHP, webového serveru Apache nebo jakýchkoli jiných komponent souvisejících s Moodle a spustit druhý běh, abyste porovnali, zda použité ladění dává smysl. Než provedeme druhý benchmark, musíme spustit skript after_run_setup.sh, abychom připravili a vyčistili testovací web Moodle, kde skript obnoví databázi a datový kořen Moodle:
$ ./after_run_setup.sh
Nyní jsme připraveni spustit druhý benchmark:
$ ./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.
Výsledky srovnání
Výsledky benchmarku by se měly objevit a dostupné na adrese http://18.141.187.189/moodle-performance-comparison/ . Následující celostránkový snímek obrazovky je příkladem výsledků, které byste získali:
Porovnání nám umožňuje porozumět tomu, ve kterých aspektech nebo komponentech webu Moodle došlo mezi spuštěními ke zlepšení. Než se nakonec rozhodne, zda konkrétní ladění přineslo webu Moodle dobré nebo špatné výsledky, je dobré provést benchmark vícekrát, abyste získali významný průměr.
Existuje mnoho dalších způsobů, jak provést benchmark JMeter, jak je popsáno zde. Můžete spustit benchmark přímo na živém webu (nedoporučuje se), nebo vytvořit místní testovací web Moodle s daty z produkce pomocí zálohy produkční databáze a adresáře moodledata, nebo také spustit benchmark lokálně proti více verzím Moodle. instalace pro porovnání zisku nebo ztráty výkonu pro jednotlivé verze.