Moodle, sistem manajemen pembelajaran (LMS) paling populer di dunia, umumnya digunakan di lingkungan yang berkembang pesat dan berskala besar. Untungnya, Moodle dibangun dengan mempertimbangkan ketersediaan dan skalabilitas, dengan banyak alat, untuk membantu kami mengelola infrastruktur besar. Infrastruktur Moodle skala besar dapat diatur pada berbagai jenis mesin, dari bare metal hingga wadah virtual terkotak (atau Kubernetes Pods) dan biasanya akan melibatkan arsitektur multi-tingkat untuk penyeimbang beban terpisah, server web, server cache, server penyimpanan terpusat/berkelompok dan server basis data.
Dalam posting blog ini, kami akan menunjukkan kepada Anda bagaimana melakukan benchmark situs Moodle Anda, yang akan memungkinkan kami untuk memahami bagaimana kinerja situs Moodle kami dalam jangka waktu tertentu. Dalam setup cluster, kinerja cluster Moodle dapat dipengaruhi oleh berbagai faktor seperti sumber daya perangkat keras, overhead virtualisasi, latency jaringan antara server, firewall, caching dan banyak lagi, dan melakukan benchmark adalah cara yang solid untuk menguji dan memperkirakan kinerja Moodle. sebelum ditayangkan dalam produksi.
Plugin Pembandingan Laporan
Pertama-tama, ada baiknya untuk memiliki pemahaman dasar saat penyiapan kami tidak digunakan dan juga di bawah lingkungan beban berat. Sangat disarankan untuk menginstal plugin Report Benchmark untuk Moodle, yang melakukan berbagai pengujian untuk menentukan kualitas platform Moodle menggunakan sistem penilaian. Skor ini membandingkan sistem dan kecepatan Anda dengan beberapa nilai ambang (dapat diterima dan kritis), seperti screenshot berikut:
Setelah plugin diinstal, buka Administrasi situs -> Laporan -> Tolok Ukur -> Mulai tolok ukur untuk melakukan benchmark. Tes benchmark harus berlangsung kurang dari 1 menit dan akan dibatalkan pada 2 menit, terlepas dari apakah ada kekhawatiran pada platform Anda. Semakin rendah skornya, semakin baik, dan jika semuanya berwarna hijau, umumnya menunjukkan bahwa situs Moodle kita harus dalam kondisi yang baik. Pada dasarnya ada 5 kelompok uji:
- Kecepatan server
- Kecepatan prosesor
- Kecepatan hard disk
- Kecepatan basis data
- Memuat kecepatan halaman
Saat Moodle berperilaku lebih lambat dari yang diantisipasi, Anda akan melihat beberapa kotak non-hijau muncul di laporan benchmark seperti yang ditunjukkan pada contoh berikut:
Lebih jauh ke bawah laporan, Anda bisa mendapatkan ringkasan benchmark. Dalam kasus di atas, kami membuat alat Apache Benchmark (ab) untuk menguji situs web dengan 20 koneksi pengguna secara bersamaan dan secara bersamaan menjalankan laporan benchmark ini dan mengamati kinerja Moodle. Pembenaran ringkasan, meskipun cukup luas dalam aspek penyetelan, dapat membantu kami mempersempit area yang perlu ditingkatkan seperti pengoptimalan basis data, cache Moodle, dan sumber daya perangkat keras.
Disarankan untuk melakukan uji benchmark ini beberapa kali untuk mendapatkan rata-rata yang signifikan. Jika kinerja instalasi Anda tidak optimal, Anda akan menemukan beberapa rekomendasi untuk memperbaikinya di dokumentasi Moodle. Jangan jalankan tolok ukur ini pada platform produksi selama jam aktif, karena dapat mengakibatkan penurunan performa yang signifikan.
Apache JMeter
Apache JMeter adalah aplikasi Java yang dirancang untuk memuat pengujian perilaku fungsional dan mengukur kinerja aplikasi web statis dan dinamis. Ini dapat digunakan untuk mensimulasikan beban berat pada server, grup server, jaringan atau objek untuk menguji kekuatannya atau untuk menganalisis kinerja keseluruhan di bawah jenis beban yang berbeda.
Sejak Moodle v2.5 dan yang lebih baru, ia hadir dengan generator rencana pengujian JMeter untuk menyederhanakan proses pengujian beban dengan JMeter melalui dua skrip bawaan - "Buat kursus pengujian" dan "Buat rencana pengujian JMeter", keduanya tersedia di Administrasi situs -> Pengembangan , ditambah dengan satu set perbandingan kinerja Moodle add-on. Agar Anda dapat menggunakan fitur ini melalui antarmuka web Moodle, Anda harus mengubah Moodle ke Mode Pengembang di bawah Administrasi situs -> Pengembangan -> Debugging -> Pesan debug -> DEVELOPER:pesan debug Moodle tambahan untuk pengembang . Jika tidak, gunakan alat CLI yang tersedia di direktori {Moodle}/admin/tool/generator/cli.
Perhatikan bahwa pengujian JMeter tidak boleh dilakukan pada sistem produksi. Skrip rencana pengujian menghasilkan data dan dengan sengaja memuat server hingga batasnya dan lebih dari itu, sering kali membuatnya kelebihan beban dan menjadi tidak responsif. Jangan menjalankannya pada instans Moodle terpisah di server produksi, menghubungkan ke sistem database produksi yang sama karena akan mempengaruhi kinerja secara langsung.
Menyebarkan Server JMeter
Untuk menyederhanakan instruksi, kami menjalankan semua perintah kami sebagai pengguna root. Di server JMeter, instal semua paket yang diperlukan:
$ 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
Buat pengguna MySQL istimewa untuk digunakan oleh alat perbandingan kinerja Moodle. Tidak perlu membuat database terlebih dahulu:
$ mysql -uroot -p
mysql> CREATE USER 'moodleperformance'@'localhost' IDENTIFIED BY 'mys3cret';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'moodleperformance'@'localhost';
mysql> exit
Buat direktori dataroot dan cadangan:
$ mkdir /var/moodledata
$ chmod -R 777 /var/moodledata
$ mkdir /root/backups
Instal Java:
$ apt update
$ apt install default-jre
Unduh Apache JMeter dari situs resminya dan simpan di direktori /opt:
$ wget https://downloads.apache.org//jmeter/binaries/apache-jmeter-5.4.tgz
$ tar -xzf apache-jmeter-5.4.tgz -C /opt
Dapatkan alat Perbandingan Kinerja Moodle dari Github dan letakkan di bawah root dokumen default server web Apache di /var/www/html, dan juga salin file konfigurasi dari templatenya:
$ 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
Buka jmeter_config.properties dan edit baris berikut:
jmeter_path=/opt/apache-jmeter-5.4
Menjalankan Rencana Uji JMeter
Cara paling sederhana untuk menjalankan benchmark Moodle dengan menggunakan alat ini adalah dengan menjalankan benchmark Moodle lokal, di mana skrip akan secara otomatis menarik aplikasi Moodle dari Github, menyiapkan database dan mengatur konfigurasi yang diperlukan untuk lingkungan pengujian lokal. Yang perlu kita lakukan adalah menentukan yang berikut di 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"
Dimana 18.141.187.189 adalah alamat IP publik dari server JMeter ini. Moodle yang akan dijadikan benchmark dapat diakses di http://18.141.187.189/moodle-performance-comparison/moodle. Setelah konfigurasi di atas, navigasikan ke /var/www/html/moodle-performance-comparison:
$ cd /var/www/html/moodle-performance-comparison
Hal pertama adalah membayar situs uji Moodle dengan sekumpulan data. Ukuran situs Moodle dapat ditentukan sebagai berikut:
Ukuran | Rencana Pengujian |
XS | 1 pengguna, 5 loop, dan 1 periode peningkatan |
S | 30 pengguna, 5 loop, dan 6 periode ramp-up |
M | 100 pengguna, 5 loop, dan 40 periode peningkatan |
L | 1000 pengguna, 6 loop, dan 100 periode ramp-up |
XL | 5000 pengguna, 6 loop, dan 500 periode ramp-up |
XXL | 10000 pengguna, 7 loop, dan 800 periode ramp-up |
$ ./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
Sebelum kita memulai benchmark, disarankan untuk me-restart server web dan database sehingga kita mendapatkan hasil baseline yang baik:
$ ./restart_service.sh
#######################################################################
Services restarted successfully.
Now you can begin running the tests with test_runner.sh.
Sekarang kita siap menjalankan benchmark JMeter dengan menggunakan script 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.
Kami sekarang telah menyelesaikan proses pertama kami dan mendapatkan kinerja di situs Moodle biasa. Pada titik ini, Anda dapat melakukan penyetelan dan penyesuaian kinerja apa pun ke server basis data, PHP, server web Apache, atau komponen lain apa pun yang terkait dengan Moodle dan menjalankan proses kedua untuk membandingkan apakah penyetelan yang diterapkan masuk akal. Sebelum kita membuat benchmark kedua, kita harus mengeksekusi script after_run_setup.sh untuk mempersiapkan dan membersihkan situs Moodle pengujian dimana script akan mengembalikan database dan dataroot Moodle:
$ ./after_run_setup.sh
Sekarang kita siap menjalankan benchmark kedua:
$ ./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.
Hasil Tolok Ukur
Hasil benchmark akan muncul dan dapat diakses di http://18.141.187.189/moodle-performance-comparison/ . Tangkapan layar seluruh halaman berikut adalah contoh hasil yang akan Anda dapatkan:
Perbandingan memungkinkan kita untuk memahami aspek atau komponen mana dari situs Moodle yang telah ditingkatkan di antara proses. Sebaiknya lakukan benchmark beberapa kali untuk mendapatkan rata-rata yang signifikan, sebelum akhirnya membuat keputusan apakah penyetelan tertentu telah memberikan hasil yang baik atau buruk ke situs Moodle.
Ada banyak cara lain untuk melakukan benchmark JMeter seperti yang dijelaskan di sini. Anda dapat menjalankan benchmark langsung ke situs langsung (tidak disarankan), atau menampilkan situs uji Moodle lokal dengan data dari produksi dengan menggunakan cadangan database produksi dan direktori moodledata, atau juga menjalankan benchmark secara lokal terhadap beberapa versi Moodle instalasi untuk membandingkan keuntungan atau kerugian dalam kinerja untuk setiap versi.