Moodle, hệ thống quản lý học tập (LMS) phổ biến nhất thế giới, thường được triển khai trong một môi trường quy mô lớn và phát triển nhanh chóng. May mắn thay, Moodle được xây dựng với tính sẵn sàng và khả năng mở rộng, với rất nhiều công cụ, để giúp chúng tôi quản lý một cơ sở hạ tầng lớn. Cơ sở hạ tầng Moodle quy mô lớn có thể được thiết lập trên các loại máy khác nhau, từ kim loại trần đến các thùng chứa ảo có ngăn (hoặc Kubernetes Pod) và thường liên quan đến kiến trúc nhiều tầng cho các bộ cân bằng tải riêng biệt, máy chủ web, máy chủ bộ nhớ cache, máy chủ lưu trữ tập trung / nhóm và máy chủ cơ sở dữ liệu.
Trong bài đăng trên blog này, chúng tôi sẽ chỉ cho bạn cách thực hiện điểm chuẩn của trang web Moodle của bạn, điều này sẽ cho phép chúng tôi hiểu cách trang web Moodle của chúng tôi hoạt động trong một khoảng thời gian nhất định. Trong thiết lập theo nhóm, hiệu suất của một cụm Moodle có thể bị ảnh hưởng bởi nhiều yếu tố khác nhau như tài nguyên phần cứng, chi phí ảo hóa, độ trễ mạng giữa các máy chủ, tường lửa, bộ nhớ đệm và nhiều yếu tố khác và thực hiện các điểm chuẩn là một cách chắc chắn để kiểm tra và ước tính hiệu suất của Moodle trước khi nó được đưa vào sản xuất.
Báo cáo Plugin đo điểm chuẩn
Trước hết, bạn nên hiểu rõ về thời điểm thiết lập của chúng ta không hoạt động và cũng trong môi trường tải nặng. Bạn nên cài đặt plugin Report Benchmark cho Moodle, plugin này thực hiện nhiều thử nghiệm khác nhau để xác định chất lượng của nền tảng Moodle bằng cách sử dụng hệ thống tính điểm. Điểm số này so sánh hệ thống và tốc độ của bạn với một số giá trị ngưỡng (chấp nhận được và quan trọng), giống như ảnh chụp màn hình sau:
Sau khi cài đặt plugin, hãy truy cập Quản trị trang web -> Báo cáo -> Điểm chuẩn -> Bắt đầu điểm chuẩn để thực hiện điểm chuẩn. Các bài kiểm tra điểm chuẩn sẽ kéo dài dưới 1 phút và sẽ bị hủy bỏ sau 2 phút bất kể, cho thấy liệu có những lo lắng trên nền tảng của bạn hay không. Điểm càng thấp càng tốt và nếu tất cả đều có màu xanh lục, điều đó thường cho thấy rằng trang Moodle của chúng tôi phải ở trạng thái tốt. Về cơ bản có 5 nhóm thử nghiệm:
- Tốc độ máy chủ
- Tốc độ bộ xử lý
- Tốc độ ổ cứng
- Tốc độ cơ sở dữ liệu
- Tốc độ tải trang
Trong những trường hợp Moodle hoạt động chậm hơn dự đoán, bạn sẽ thấy một số hộp không phải màu xanh lục xuất hiện trong báo cáo điểm chuẩn như được hiển thị trong ví dụ sau:
Trong báo cáo, bạn có thể nhận được tóm tắt về điểm chuẩn. Trong trường hợp trên, chúng tôi đã tạo một công cụ Apache Benchmark (ab) để kiểm tra trang web với 20 kết nối người dùng đồng thời và chạy đồng thời báo cáo điểm chuẩn này và quan sát hiệu suất của Moodle. Lời giải thích tóm tắt, mặc dù khá rộng trong các khía cạnh điều chỉnh, có thể giúp chúng tôi thu hẹp lĩnh vực cần cải thiện như tối ưu hóa cơ sở dữ liệu, bộ nhớ cache Moodle và tài nguyên phần cứng.
Nên thực hiện kiểm tra điểm chuẩn này nhiều lần để có được điểm trung bình đáng kể. Nếu hiệu suất cài đặt của bạn không tối ưu, bạn sẽ tìm thấy một số khuyến nghị để cải thiện nó trong tài liệu Moodle. Không chạy điểm chuẩn này trên nền tảng sản xuất trong giờ hoạt động, vì nó có thể dẫn đến giảm hiệu suất đáng kể.
Apache JMeter
Apache JMeter là một ứng dụng Java được thiết kế để tải hành vi chức năng kiểm tra và đo lường hiệu suất của các ứng dụng web tĩnh và động. Nó có thể được sử dụng để mô phỏng tải nặng trên máy chủ, nhóm máy chủ, mạng hoặc đối tượng để kiểm tra sức mạnh của nó hoặc để phân tích hiệu suất tổng thể dưới các loại tải khác nhau.
Kể từ Moodle v2.5 trở lên, nó đi kèm với trình tạo kế hoạch kiểm tra JMeter để đơn giản hóa quá trình kiểm tra tải với JMeter thông qua hai tập lệnh tích hợp - "Thực hiện khóa học thử nghiệm" và "Lập kế hoạch thử nghiệm JMeter", cả hai đều có sẵn trong Quản trị trang -> Phát triển , được tăng cường bởi một tập hợp các tiện ích bổ sung so sánh hiệu suất Moodle. Để bạn có thể sử dụng tính năng này thông qua giao diện web Moodle, bạn phải chuyển Moodle sang Chế độ nhà phát triển trong Quản trị trang -> Phát triển -> Gỡ lỗi -> Thông báo gỡ lỗi -> DEVELOPER:thêm Moodle gỡ lỗi thông báo cho nhà phát triển . Nếu không, hãy sử dụng các công cụ CLI có sẵn trong thư mục {Moodle} / admin / tool /vator / cli.
Lưu ý rằng kiểm tra JMeter không nên được thực hiện trên hệ thống sản xuất. Các kịch bản kế hoạch thử nghiệm tạo ra dữ liệu và cố tình tải máy chủ đến giới hạn của nó và vượt quá giới hạn của nó, thường làm cho nó quá tải và trở nên không đáp ứng. Thậm chí, đừng chạy chúng trên một phiên bản Moodle riêng biệt trong máy chủ sản xuất, kết nối với cùng một hệ thống cơ sở dữ liệu sản xuất vì nó sẽ ảnh hưởng trực tiếp đến hiệu suất.
Triển khai Máy chủ JMeter
Để đơn giản hóa các hướng dẫn, chúng tôi thực hiện tất cả các lệnh của mình với tư cách là người dùng root. Trên máy chủ JMeter, hãy cài đặt tất cả các gói cần thiết:
$ 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
Tạo người dùng MySQL đặc quyền để được sử dụng bởi công cụ so sánh hiệu suất Moodle. Không cần tạo cơ sở dữ liệu trước:
$ mysql -uroot -p
mysql> CREATE USER 'moodleperformance'@'localhost' IDENTIFIED BY 'mys3cret';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'moodleperformance'@'localhost';
mysql> exit
Tạo dataroot và thư mục sao lưu:
$ mkdir /var/moodledata
$ chmod -R 777 /var/moodledata
$ mkdir /root/backups
Cài đặt Java:
$ apt update
$ apt install default-jre
Tải xuống Apache JMeter từ trang web chính thức và lưu trữ nó trong thư mục / opt:
$ wget https://downloads.apache.org//jmeter/binaries/apache-jmeter-5.4.tgz
$ tar -xzf apache-jmeter-5.4.tgz -C /opt
Tải công cụ So sánh Hiệu suất Moodle từ Github và đặt nó dưới gốc tài liệu mặc định của máy chủ web Apache tại / var / www / html, đồng thời sao chép các tệp cấu hình từ các mẫu của chúng:
$ 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
Mở jmeter_config.properties và chỉnh sửa dòng sau:
jmeter_path=/opt/apache-jmeter-5.4
Chạy Kế hoạch Kiểm tra JMeter
Cách đơn giản nhất để chạy điểm chuẩn Moodle bằng cách sử dụng công cụ này là chạy điểm chuẩn Moodle cục bộ, nơi các tập lệnh sẽ tự động kéo ứng dụng Moodle từ Github, thiết lập cơ sở dữ liệu và đặt cấu hình cần thiết cho môi trường thử nghiệm cục bộ. Những gì chúng ta cần làm là chỉ định những điều sau trong 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"
Trong đó 18.141.187.189 là địa chỉ IP công cộng của máy chủ JMeter này. Moodle sẽ được đánh giá chuẩn có thể truy cập tại http://18.141.187.189/moodle-performance-comparison/moodle. Khi phần trên được định cấu hình, hãy điều hướng đến / var / www / html / moodle-performance-so sánh:
$ cd /var/www/html/moodle-performance-comparison
Việc đầu tiên là tính phí trang web thử nghiệm Moodle với một bộ dữ liệu. Kích thước trang web Moodle có thể được xác định bằng cách sau:
Kích thước | Kế hoạch Kiểm tra |
XS | 1 người dùng, 5 vòng lặp và 1 giai đoạn tăng tốc |
S | 30 người dùng, 5 vòng lặp và 6 giai đoạn tăng tốc |
M | 100 người dùng, 5 vòng lặp và 40 giai đoạn tăng tốc |
L | 1000 người dùng, 6 vòng lặp và 100 giai đoạn tăng tốc |
XL | 5000 người dùng, 6 vòng lặp và 500 giai đoạn tăng tốc |
XXL | 10000 người dùng, 7 vòng lặp và 800 giai đoạn tăng tốc |
$ ./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
Trước khi chúng tôi bắt đầu điểm chuẩn, chúng tôi nên khởi động lại máy chủ web và cơ sở dữ liệu để chúng tôi có được kết quả cơ bản tốt:
$ ./restart_service.sh
#######################################################################
Services restarted successfully.
Now you can begin running the tests with test_runner.sh.
Bây giờ chúng tôi đã sẵn sàng chạy điểm chuẩn của JMeter bằng cách sử dụng tập lệnh 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.
Hiện chúng tôi đã hoàn thành lần chạy đầu tiên và có một buổi biểu diễn trên trang Moodle đơn giản. Tại thời điểm này, bạn có thể thực hiện bất kỳ điều chỉnh và tinh chỉnh hiệu suất nào đối với máy chủ cơ sở dữ liệu, máy chủ web PHP, Apache hoặc bất kỳ thành phần nào khác liên quan đến Moodle và chạy lần chạy thứ hai để so sánh xem việc điều chỉnh được áp dụng có hợp lý hay không. Trước khi tạo điểm chuẩn thứ hai, chúng ta phải thực thi tập lệnh after_run_setup.sh để chuẩn bị và dọn dẹp trang web Moodle thử nghiệm nơi tập lệnh sẽ khôi phục cơ sở dữ liệu và dữ liệu Moodle:
$ ./after_run_setup.sh
Bây giờ chúng tôi đã sẵn sàng chạy điểm chuẩn thứ hai:
$ ./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.
Kết quả Điểm chuẩn
Kết quả điểm chuẩn sẽ xuất hiện và có thể truy cập tại http://18.141.187.189/moodle-performance-comparison/. Ảnh chụp màn hình toàn trang sau đây là một ví dụ về kết quả mà bạn sẽ nhận được:
So sánh cho phép chúng tôi hiểu khía cạnh hoặc thành phần nào của trang Moodle đã được cải thiện giữa các lần chạy. Việc thực hiện điểm chuẩn nhiều lần để có được mức trung bình đáng kể, trước khi đưa ra quyết định xem việc điều chỉnh cụ thể có mang lại kết quả tốt hay xấu cho trang web Moodle là điều tốt hay không.
Có nhiều cách khác để thực hiện điểm chuẩn JMeter như được mô tả ở đây. Bạn có thể chạy điểm chuẩn trực tiếp đến trang web đang hoạt động (không được khuyến nghị) hoặc phân đoạn trang web thử nghiệm Moodle cục bộ với dữ liệu từ quá trình sản xuất bằng cách sử dụng bản sao lưu của cơ sở dữ liệu sản xuất và thư mục moodledata hoặc cũng có thể chạy điểm chuẩn cục bộ dựa trên nhiều phiên bản của Moodle cài đặt để so sánh được hoặc mất hiệu suất cho từng phiên bản.