Reading a few of the posts in this forum there is a lot of discussion about slow servers, page load times, browser problems with the upgrade to 2.3. I'm curious: are there servers out there that are working with more than a few small courses with a few users that are NOT experiencing problems?
I am currently running Moodle 2.3.2+ (Build: 20120914), PHP 5.3.3, Centos 6.3, and MySQL 5.1.61.
I do not have a big site...only about 100 users and 30 courses. Usually no more than 15 users online at a time. When I first switched to Moodle2.0 and right on up to 2.3.1, my site was noticably slower than what I was used to with Moodle 1.9.x last school year. However, I have now managed to get things tweaked so that performance is comparable to what I get from Moodle 1.9.19 which I still have on the same server.
Typical performance times on page loads for students last year were about half a second with me as admin getting about .8 seconds per page. We experienced numerous page timeouts especially when taking tests. I routinely would only let four students at a time start a test to prevent page timeouts.
This year with Moodle 2.3.2+ typical performance times on any pages for students run less than .3 seconds. Even me as admin load times are mostly around .4 seconds and then about .7 seconds when editing is turned on. Just now while logged in as a student, I am getting .2 seconds for a quiz with 5 random questions to the page with pictures and Nanogong audio. (Of course the audio does not load until your tell it to by clicking the speaker.) I now let students countdown and start test at the same time, trying to get page timeouts. The only time we have managed it, was when my router was having trouble a few weeks ago.
The difference between the earlier slow performance and the much better performance I get now...
2 years ago - Old server 1 - AMD single core cpu at 2.4 GHz with 4GB RAM, a 7200 rpm hard drive on Centos 5.8. No caching other than what was built into Moodle 1.9.x. Loadtest script indicated I could only support about 3 to 5 concurrent users.
Last year - Old server 2 - Intel core 2 duo cpu at 2.4 GHz with 4GB RAM, a 7200 rpm hard drive on Centos 5.8. No caching other than what was built into Moodle 1.9.15. Loadtest script indicated I could support about 10 concurrent users. In July of this year, I put in a 256 GB Solid State Drive. Concurrency jumped to about 19. Tried eAccelerator and then APC. Concurrency jumped to 33. It is fun to watch the test ramp up until it fails when all four cores are running at 100%.
The first week of August, since I had been too ill to play golf lately, I convinced my wife to let me use the money I saved to build a new server - AMD 8 core cpu at 3.6 GHz with 32 GB RAM using a 512 GB Solid State Drive on Centos 6.3. Apache is set up to use deflate and I am using APC for PHP caching. The same load test on my Moodle 1.9.19+ now shows I can handle 55.5 concurrent requests. I am reasonably sure I am once again hardware limited as I can peg 6 cores to 100% and the other two hover around 96%. Granted, I doubt I could actually handle 55 concurrent users in Moodle 2.3.2 but this is more than sufficient for my classes now.
I have been experimenting with the APC cache settings and getting some more improvement because the default memory settings of 32 MB for APC are terrible when it comes to Moodle. After all, Moodle 1.9.19 has about 6300 files and Moodle 2.3.2 has about 13000. Ressetting the cache to empty and then just loading the front page of my Moodle 2.3.2+ will put 499 files in cache and takes up 68.4 MBs. The past month I have been using 256 MB for cache and it tends to fill up in less than an hour or two when students are in class. I am ready to ramp up the memory to 512 and try that for a while.
This is progress. In a little over a week we hear about one site on 2.3.2 that is up and running and humming. On the scale of things this is not a big site I guess, but it does show (as Visvanath, Howard etc say constantly) the benefits of testing and tweaking.
"Make a nice cup of tea, go a journey with Alice 1). Once you are back, calm and quiet, learn from the masters 2)."
2) https://en.wikipedia.org/wiki/Niklaus_Wirth#Wirth.27s_law -> http://cr.yp.to/bib/1995/wirth.pdf
We have successfully been running Moodle 2.3 on a medium large site that we upgraded from Moodle 2.2 on Aug 8, 2012.
The Database size is ~17GB. Google analytics typically reports 200-300 active vistors. Looking in Moodle logs broken into 1 minute periods we hit daily peaks of 150-200 users and 500-1000 logged events. Here are our numbers from our Moodle registration page:
- Number of courses (14817)
- Number of users (68246)
- Number of role assignments (153713)
- Number of posts (130792)
- Number of questions (414304)
- Number of resources (44427)
Besides our current production Moodle 2.3, we also have a Moodle 1.9 site that has courses we offered before moving to Moodle 2 that has DB ~32GB.
We do update Moodle regularly to get improvements, and are currently running 2.3.2+ (Build: 20120927). We have one web server and one DB server. The servers are identical so that in a short time we could fail over from one to the other. The servers are Dell R710's and have 80GB RAM, 12 hyperthreaded cores, 15k rpm local disks, 2x 1G internet connections, 2x 1G connections to good quality SAN for moodle data, RHEL 6.3 with remi and EPEL repositories to meet PHP and MySQL requirements for Moodle 2.3. We are not running virtual machines. I wouldn't run Moodle on virtual machines for a large site unless I was enough of an expert on VM's to not need to ask questions on these forums. ;)
We have spent a lot of time ensuring that our hardware and software doesn't have avoidable bottlenecks. We have followed advice and done research based on the Moodle performance documentation. We have upgraded hardware twice over six years, from Sun V440's to Sun X4600 to are current servers. We have optimized both Apache/PHP and MySQL for our workload. We use the latest version of APC cache. I can't see running a Moodle site of any significant size without a PHP cache. MySQL 5.5 with InnoDB on RHEL 6 is a big improvemnt over MySQL 5.1 with MyISAM on our previous Sun configuration. For anyone using Mysql, I would recommend High Performance MySQL: Optimization, Backups, and Replication, 3rd edition by Schwartz, Baron, Zaitsev, Peter, Tkachenko, Vadim. We have performance monitoring. We do performance testing using JMeter on test servers with similar set-up to production.
We haven't seen the difference Paul Nijbakker saw with "Open in new window turned on in Site Administration > Appearance > Moodle docs", but some performance issues are very site configuration dependant.