Hello everybody,
This is my first post at the moodle forums. I want to share with all of you the technique that we've used here at UPC to increase the capacity of our moodle front-ends in terms of http requests. I presented this solution a few days ago at the Spanish MoodleMoot and talked with Martin Langhoff about the convenience of sharing this kind of tips with the whole moodle community.
At UPC we have increased the number of users of our moodle installation from 7.000 to 30.000 this September. We wanted to assure concurrency ratios over 1000 users at a time and we've been doing a little bit of testing over the last months to accomplish our goal.
One of our first and biggest problems was the RAM collapse caused by the great amount of apache processes that we needed. To deal with this problem we have installed two apache servers in each of our 3 front-end servers. The first Apache server (working at the 80 port) is a "tiny-apache", a special implementation of apache with no extra-modules. It only serves static content, (basically logos and most of the .gif/.jpg/.png... stuff), and re-sends (with a rewrite rule) every other kind of request, (i.e. php pages), to a standard apache web server (with all the extra modules needed to run moodle) running at the 8080 port.
With this approach we have an important % of the http requests answered directly by the tiny-apache which has a memory weight of only 2Mb per child! Now we need a lot less number of "15Mb processes" to attend the same number of http requests that we needed before. Consequently, our system now has a much higher capacity due to its new (higher) RAM limit.
We've been making other changes to our system to increase performance but this is probably the most interesting one.
Hope this helps someone with similar performance requirements.
Any comments will be welcome.
--
Marcos