5000 users may seem a lot, but in terms of server requirements it depends.
First I would recommend establishing what activities
are going to be enabled to the users, in order to understand what load is the "server" going to be exposed to.
Also it is important to establish how users are going to participate in moodle, in order to understand a possible concurrency.
-moodle installation for a school
-all school activities are going to be coordinated through Moodle, so concurrency can be expected to be high (20-40%).
-activities enabled: videos, quizzes, assignments, messaging, chats
Identify high cpu/ram/disk/network activities:
-chats has high cpu usage (may be a good idea to avoid on the first phase implementation)
-videos has high network usage (may be a good idea to use vimeo or similar and embed on moodle, this way the high load is transferred to external service)
-assignments has high cpu/ram/network usage, and may be higher if assignments requires large files to be uploaded, and the possibility that many users upload
at the same time. Also Disk (moodledata folder) size can grow very very fast, in this case it may be a good idea to implement a remote storage with this plugin https://github.com/catalyst/moodle-tool_objectfs
-quizzes has high cpu usage.
based on a current moodle installation I currently host
, has 1000 users, average 200 concurrent
stack: cpanel + lightspeed + vimeo for videos + digitalocean spaces
server specs: 2 cpu, 1.5 gb ram (average resource usage is 50% )
estimated average memory consumption per concurrent user: 7-10 mb
estimated average cpu usage: 1/2 cpu per 200 users
Estimated usage (to start, overestimate):
(based on historic usage and stack specs)
concurrent users: 30% (1500)
max memory usage: 15 gb
max cpu usage: 8cpu
Moodle has many background processes and must run every minute, consider this on your calculations.
Stack I will choose to start:
- 8 core cpu
- 24 gb ram
- disk 100gb
- software: cpanel + lightspeed + cloudlinux (this will give you absolutely control over the server and performance)
- moodle plugin: objectfs with digitalocean space with 250gb
cpanel + lightspeed + cloudlinux will give you absolute control and security over the server.
Lightspeed will improve server performance 4x at least (compared to apache).
Cloudlinux monitors account usage and limits account resources, so if you have an overload you will still be able to login the server and check.
This is my opinion and is based on my experience, so take it as it is and do your math, good luck!
(will be great to know what you decided and how it worked when live)