Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak porównywać wydajność Moodle?

Moodle, najpopularniejszy na świecie system zarządzania nauką (LMS), jest powszechnie wdrażany w szybko rozwijającym się środowisku na dużą skalę. Na szczęście Moodle jest zbudowany z myślą o dostępności i skalowalności, z wieloma narzędziami, które pomagają nam zarządzać dużą infrastrukturą. Infrastruktury Moodle na dużą skalę mogą być konfigurowane na różnych typach maszyn, od zwykłych metalowych po podzielone na segmenty wirtualne kontenery (lub Kubernetes Pods) i zwykle obejmują wielowarstwową architekturę dla oddzielnych systemów równoważenia obciążenia, serwerów WWW, serwerów pamięci podręcznej, scentralizowanych/klastrowych serwerów pamięci masowej i serwery baz danych.

W tym poście na blogu pokażemy Ci, jak przeprowadzić test porównawczy Twojej witryny Moodle, co pozwoli nam zrozumieć, jak nasza witryna Moodle działa w danym okresie czasu. W konfiguracji klastrowej na wydajność klastra Moodle mogą wpływać różne czynniki, takie jak zasoby sprzętowe, obciążenie wirtualizacji, opóźnienia sieciowe między serwerami, zapory ogniowe, buforowanie i wiele innych, a wykonywanie testów porównawczych jest solidnym sposobem testowania i szacowania wydajności Moodle zanim trafi do produkcji.

Wtyczka do analizy porównawczej raportów

Przede wszystkim dobrze jest mieć wiedzę na temat podłoża, gdy nasza konfiguracja jest bezczynna, a także w środowisku o dużym obciążeniu. Zdecydowanie zaleca się zainstalowanie wtyczki Report Benchmark dla Moodle, która wykonuje różne testy w celu określenia jakości platformy Moodle za pomocą systemu punktacji. Ten wynik porównuje twój system i prędkość z niektórymi wartościami progowymi (dopuszczalnymi i krytycznymi), tak jak na poniższym zrzucie ekranu:

Po zainstalowaniu wtyczki przejdź do Administracja witryną -> Raporty -> Test porównawczy -> Uruchom test porównawczy do wykonania testu porównawczego. Testy porównawcze powinny trwać krócej niż 1 minutę i zostaną przerwane po 2 minutach niezależnie od tego, co ujawni, czy na Twojej platformie są obawy. Im niższy wynik, tym lepiej, a jeśli wszystko jest zielone, ogólnie oznacza to, że nasza witryna Moodle powinna być w dobrej kondycji. Istnieje zasadniczo 5 grup testowych:

  • Szybkość serwera
  • Szybkość procesora
  • Prędkość dysku twardego
  • Szybkość bazy danych
  • Szybkość ładowania strony

W sytuacjach, w których Moodle zachowuje się wolniej niż oczekiwano, w raporcie porównawczym pojawią się niezielone pola, jak pokazano w następującym przykładzie:

W dalszej części raportu znajdziesz podsumowanie testu porównawczego. W powyższym przypadku stworzyliśmy narzędzie Apache Benchmark (ab), aby przetestować witrynę z 20 równoczesnymi połączeniami użytkowników i jednocześnie uruchomić ten raport porównawczy i obserwować wydajność Moodle. Podsumowanie, mimo że jest dość szerokie w aspektach dostrajania, może pomóc nam zawęzić obszar wymagający poprawy, taki jak optymalizacja bazy danych, pamięć podręczna Moodle i zasoby sprzętowe.

Zaleca się kilkakrotne wykonanie tego testu porównawczego, aby uzyskać znaczącą średnią. Jeśli wydajność Twojej instalacji nie jest optymalna, w dokumentacji Moodle znajdziesz kilka zaleceń, jak ją ulepszyć. Nie uruchamiaj tego testu porównawczego na platformie produkcyjnej w godzinach aktywności, ponieważ może to spowodować znaczne pogorszenie wydajności.

JMeter Apache

Apache JMeter to aplikacja Java zaprojektowana do testowania zachowania funkcjonalnego i mierzenia wydajności statycznych i dynamicznych aplikacji internetowych. Może być używany do symulacji dużego obciążenia serwera, grupy serwerów, sieci lub obiektu w celu przetestowania jego wytrzymałości lub analizy ogólnej wydajności przy różnych typach obciążenia.

Od wersji 2.5 i nowszych Moodle jest dostarczany z generatorem planu testów JMeter, aby uprościć proces testowania obciążenia za pomocą JMeter za pomocą dwóch wbudowanych skryptów - "Make test course" i "Make JMeter test plan", oba dostępne pod Administracja strony -> Rozwój , wzbogacony o zestaw dodatków do porównania wydajności Moodle. Aby móc korzystać z tej funkcji przez interfejs sieciowy Moodle, musisz przełączyć Moodle w tryb programisty w sekcji Administracja witryny -> Rozwój -> Debugowanie -> Komunikaty debugowania -> DEWELOPER:dodatkowe komunikaty debugowania Moodle dla programistów . W przeciwnym razie użyj narzędzi CLI dostępnych w katalogu {Moodle}/admin/tool/generator/cli.

Należy zauważyć, że test JMeter nie powinien być wykonywany w systemie produkcyjnym. Skrypty planu testów generują dane i celowo obciążają serwer do granic możliwości, a nawet więcej, co często powoduje jego przeciążenie i przestanie odpowiadać. Nie uruchamiaj ich nawet na oddzielnej instancji Moodle na serwerze produkcyjnym, łącząc się z tym samym produkcyjnym systemem bazy danych, ponieważ wpłynie to bezpośrednio na wydajność.

Wdrażanie serwera JMeter

Aby uprościć instrukcje, wszystkie nasze polecenia wykonujemy jako użytkownik root. Na serwerze JMeter zainstaluj wszystkie niezbędne pakiety:

$ 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

Utwórz uprzywilejowanego użytkownika MySQL, który będzie używany przez narzędzie do porównywania wydajności Moodle. Nie ma potrzeby wcześniejszego tworzenia bazy danych:

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

Utwórz katalog główny i katalog kopii zapasowej:

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

Zainstaluj Javę:

$ apt update
$ apt install default-jre

Pobierz Apache JMeter z oficjalnej strony i zapisz go w katalogu /opt:

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

Pobierz narzędzie do porównywania wydajności Moodle z Github i umieść je w domyślnym katalogu głównym dokumentów serwera Apache pod adresem /var/www/html, a także skopiuj pliki konfiguracyjne z ich szablonów:

$ 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

Otwórz jmeter_config.properties i edytuj następujący wiersz:

jmeter_path=/opt/apache-jmeter-5.4

Przeprowadzanie planu testów JMeter

Najprostszym sposobem na uruchomienie testu porównawczego Moodle za pomocą tego narzędzia jest uruchomienie lokalnego testu porównawczego Moodle, w którym skrypty automatycznie pobierzą aplikację Moodle z Github, skonfigurują bazę danych i ustawią niezbędne konfiguracje dla lokalnego środowiska testowego. To, co musimy zrobić, to określić następujące elementy w 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"

Gdzie 18.141.187.189 to publiczny adres IP tego serwera JMeter. Moodle, który będzie testowany, jest dostępny pod adresem http://18.141.187.189/moodle-performance-comparison/moodle . Po skonfigurowaniu powyższego przejdź do /var/www/html/moodle-performance-comparison:

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

Pierwszą rzeczą jest zasilenie strony testowej Moodle zestawem danych. Rozmiar witryny Moodle można określić w następujący sposób:

Rozmiar

Plan testowy

XS

1 użytkownik, 5 pętli i 1 okres rozruchu

S

30 użytkowników, 5 pętli i 6 okresów rozruchu

M

100 użytkowników, 5 pętli i 40 okresów rozruchu

L

1000 użytkowników, 6 pętli i 100 okresów rozruchu

XL

5000 użytkowników, 6 pętli i 500 okresów rozruchu

XXL

10000 użytkowników, 7 pętli i 800 okresów rozruchu

I uruchom skrypt before_run_setup.sh, aby utworzyć witrynę Moodle o rozmiarze 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

Przed rozpoczęciem testu porównawczego zaleca się ponowne uruchomienie serwerów WWW i baz danych, aby uzyskać dobry wynik podstawowy:

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

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

Teraz jesteśmy gotowi do uruchomienia testu porównawczego JMeter za pomocą skryptu 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.

Zakończyliśmy właśnie nasze pierwsze uruchomienie i uzyskaliśmy wydajność na zwykłej stronie Moodle. W tym momencie możesz wykonać dowolne dostrajanie wydajności i podkręcanie serwera bazy danych, PHP, serwera WWW Apache lub dowolnych innych komponentów związanych z Moodle i uruchomić drugie uruchomienie, aby porównać, czy zastosowane dostrojenie ma sens. Zanim wykonamy drugi test porównawczy, musimy wykonać skrypt after_run_setup.sh, aby przygotować i wyczyścić testową witrynę Moodle, w której skrypt przywróci bazę danych i główny katalog danych Moodle:

$ ./after_run_setup.sh

Teraz jesteśmy gotowi do uruchomienia drugiego testu porównawczego:

$ ./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.

Wyniki testu porównawczego


Wyniki testu porównawczego powinny pojawić się i być dostępne pod adresem http://18.141.187.189/moodle-performance-comparison/ . Poniższy zrzut ekranu na całej stronie jest przykładem wyników, które można uzyskać:

Porównanie pozwala nam zrozumieć, które aspekty lub komponenty witryny Moodle zostały ulepszone między uruchomieniami. Dobrze jest wykonać test porównawczy kilka razy, aby uzyskać znaczącą średnią, zanim ostatecznie podejmiesz decyzję, czy dane dostrojenie przyniosło dobre lub złe wyniki na stronie Moodle.

Istnieje wiele innych sposobów wykonania testu porównawczego JMeter, jak opisano tutaj. Możesz uruchomić test porównawczy bezpośrednio na działającej stronie (niezalecane) lub przeprowadzić lokalną witrynę testową Moodle z danymi z produkcji, korzystając z kopii zapasowej produkcyjnej bazy danych i katalogu moodledata, lub też uruchomić test porównawczy lokalnie z wieloma wersjami Moodle instalacji, aby porównać wzrost lub spadek wydajności dla każdej wersji.
  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wybierz ostatni wiersz w MySQL

  2. Instalacja i konfiguracja MySQL na Ubuntu 20.04

  3. Nie można uzyskać wiosennego rozruchu, aby automatycznie utworzyć schemat bazy danych

  4. Korzystanie z tunelowania SSH jako alternatywy VPN

  5. Jak zoptymalizować wydajność COUNT(*) w InnoDB za pomocą index