What would you think of this setup for a very high number of users (more than 150.000), but quite low number of browsing users (about 500 max) ?
Separated in 2 servers :
web server (apache) : Bi-Xeon E5405, 8Gb ECC RAM, 2x100Gb Raid1 15k SAS HD
db (mysql) & data server : Xeon E5405, 8Gb ECC RAM, 3x600Gb Raid5 15k SAS HD
Both under linux.
Clustering doesn't seem necessary with the low number of browsing users.
I didn't find any numbers on average DB size generated by 1 user, anyone have an idea of this ?
Moodle should cope with this sort of thing.
I can't advice on specific hardware. The best thing would be to use a script to fill the database with randomly generated users, and then do some load-testing with JMeter or similar.
What do you mean by 'browsing users'?
On our system we have information on the number of distinct users seen in the last 5 minute period. For example the current number is 1103. (I don't think the total number of users makes any significant difference to load; it's the number of requests per second or whatever that really does.)
That 1103 is a typical number for us whereas your 500 was 'max'. If you were expecting 250 to be typical, then one webserver seems to be a similar level compared to our system. Using only a single webserver has the advantage that it makes session storage a whole lot simpler.
A more specific metric that takes into account browsing habits (ie 'one user' who just looks at course webpage is no problem, 'one user' who browses many forum pages is a significant load) is the number of Moodle log entries per 10 minute period. We are seeing around 15,000 at present.
Note that our live system is still 1.9 - reports seem to suggest that 2.0 is at least twice as slow, so if you're using 2.0, you might want to consider increased capacity.
In general I would advise that you try to ramp usage into your system so that you have time to monitor performance and increase capacity if required (i.e. rather than everybody starts using it on the same day).
Browsing users is the same thing : users active in 5 minutes period. Moodle doc indicates 1Gb RAM is necessary for 50 concurrent users (~= active users / 5)
I just ran a few tests on the database and yes, we will add more RAM, 32Gb should be enough. 150k users makes the user table alone go up to 10Gb.
We will use moodle 2.0, and maybe change mySQL for postgres, which seems way better at handling large tables.