You are looking for a 'cookie cutter' that doesn't exist *unless* all the systems are the same ... period.
All the explanations/docs anywhere will depreciate in short order, given the 'speed' at which servers change (distros, docker or whatever virtualizations, or whatever, whatever).
Would be wonder full if, when moodle sites where registered with Moodle, such tech specs were shared (along with # of users, version of Moodle, standalone vs split services, number of courses - range of courses (meaning highend to lowend), etc., but that's too much to share and would change over time and usage.
You asked about % of memory ... well, duh (no offense), but % memory for an all-in-one 8 Gig server isn't gonna be the same as a 16Gig box ... not out if the shrink wrap and not used to this point. That is also dependent upon how the web services are setup. Ok, I've heard that nginx or apache run as a fastcgi or phpfpm are supposed to handle more web clients .... but how many clients. Not the same for each server when it starts to be used!!!!
Yes, I could give you specs and numbers ... would they work on your servers? Maybe for a while ... and from what you've described if you copied and pasted my configs to all boxen, some would be overpowered first week it was used! And the other end of the spectrum, my config were not enough!
Ok, you asked for it so ...
K12 server, VMWare vrtualization, CentOS 7,
with appropriate PHP version + MySQL versioin.
PHP 7.4.33 (cli), mysql Ver 14.14 Distrib 5.7.41
31 Gig RAM,
free -h
total used free shared buff/cache available
Mem: 31G 2.8G 25G 97M 3.0G 28G
some my.cnf clips
innodb_buffer_pool_size=4G
innodb_buffer_pool_instances=4
innodb_log_file_size=384M
max_allowed_packet = 64M
max_connections=451
Tuner run on that server shows (clips):
[OK] Maximum reached memory usage: 4.6G (14.75% of installed RAM)
[!!] Maximum possible memory usage: 32.7G (104.67% of installed RAM)
[!!] Overall possible memory usage with other process exceeded memory
[OK] InnoDB buffer pool / data size: 4.0G/3.0G
But it's running just fine ... for the number of users using. It's was configured for a time when most of the student population was using moodle but with coming of Google Classroom, elementary, intermediate, and most if not all of junior high have left the moodle and 'Gone Google'. Only ones left are the high school .... and not all of them!
And that's another bit of info that's misleading ... after servers have been used for years:
6878 users!
243 courses - many are AP and 'team taught' ... one course, all students in a course but 4 or so teachers. Some are hidden courses with no activity by teacher or students - kept because there is the hope that teachers will come back to the moodle 'one of these days'.
What's peak times for that box? Depends ... there is some traffic ALL the time and at all hours! But, in this case, server is used synchronously ... teacher in front of students in class ... where as your's might be async - not face to face .. and therefore you could do with less in config.
Could go on and on ... but will say this ... the first week this box was brought online I monitored *every day* for 2 weeks ... max_connectons setting moved upwards 3 times ... sometimes during prime time. 451 by the way, *is too* much for how it's being used now ... but I left it!
Ok, what does all of the above do for you? :|
Again, no magic cookie cutter!
Hey., got an idea for ya ... use ChatBot to config a moodle ... and run it. But then again, if AI can do it, why does your entity need you?
'SoS', Ken