Hi Team,
I am seeking advice on optimizing my Moodle server configuration. Currently, my production environment runs on Apache, but I have noticed that it performs significantly slower compared to my staging environment, which runs on Nginx. Given the performance difference, I am considering whether I should replicate the staging setup for production.
Current Staging Environment:
Moodle Version: 4.5.2 (Build: 20250210)
Number of Users: 9.000+
Number of Courses: 114
Content: Some courses contain videos, but most content consists of SCORM packages and PDFs. Large files are stored in an S3 bucket to reduce local storage load.
Forever Courses : Some courses remain open indefinitely, while others follow a scheduled start/end date.
Server (AWS) and Database Setup:
EC2 Instance Type: c5.4xlarge (16 vCPUs)
Storage: 1,000 GiB EBS (with an S3 bucket for file storage)
RDS (Database):
Database Engine: MariaDB 11.4.4
Instance Class: db.t3.2xlarge
vCPUs: 8
RAM: 32 GB
Storage: 77 GiB
Web Stack:
Nginx + PHP-FPM
OPcache (1GB allocated)
Redis (Application & Session Storage)
Performance Metrics:
Load average: 0.20, 0.27, 0.32
Memory usage: ~24.9 GB free out of 32 GB
OPcache memory: 1024 MB total, 825 MB free
Redis is installed, but the performance test indicates that it is "untestable."
I have already installed and run MySQLTuner and adjusted some settings based on its recommendations.
Despite having Redis configured, Moodle’s built-in performance tests still indicate that Redis is "untestable." Below are some test results:
File Cache Performance:
Tested: 0.0074 / 0.0016 / 0.0002 / 0.0013
Redis:
Status: Untestable
Currently, my application and session storage mappings are set to Redis. However, I would like to confirm that Redis is functioning properly.
My Questions:
Does my staging configuration seem suitable for production use?
Are there further optimizations I should consider given the 9.000+ users and 114 courses (some with video content)?
Has anyone encountered the Redis "untestable" issue, and if so, how was it resolved?