I have a client with an existing single server (AWS EC2 m5xlarge) setup where the client has addressed growth by just increasing the EC2 instance size. Yet there are still occasions where the server slows down. Reviewing their setup and logs, I have found the following:
- Database has close to 60,000 users. Most of those no longer access the system, but they still need to retain them for reporting purposes for an extended period of time. Cleanup of this is being discussed
- There are a number of schedule reports that are run and some manually which do impact the performance of the server for users. Some reports are taking several minutes to run.
- When the nightly backup runs that creates a backup of the current database and the moodledata folder, there is also a significant slow down though not as impactful to users.
- Basic review of usage show that in a 1 hour timeframe, there is a range of 100-200 users active.
- 95% of courses are SCORM either locally installed or connected with an LTI connector.
- Moodle 3.9, php 7.2, Mysql5.7 (PHP will be upgrade to 7.4 and MySQL 8 very soon, Moodle is being discussed)
- Monitoring of the CPU usage shows that during the scheduled reports and the manual reports, the CPU is hitting 90-100% for several minutes, sometimes as long as 15 minutes.
- The cache hits seem to be fine for PHP files. I have not yet looked at any database caching.
- Separate DB server
- "Student" facing web server with local moodledata folder
- "Admin" facing web server with it's own moodledata folder
If the Admin server is running scheduled tasks and is only accessed by admin staff for reporting, does the moodledata folder need to be in sync with the "Student" version?