Network Traffic
The red line is the traffic from the servers. We had five peaks, one broad peak during the middle of each test.
At that time many students were attempting the listening section (playing audio files).
We estimate the over 5000 audio files were played (multiple plays of a recording are possible)
The 4th peak was highest because it had largest students (amount 300).
The maximum traffic was 1.58M bytes/sec (12.64M bits/sec). Our limit is 100M bits/second so we used about 13% of capacity. If the school upgrades to a 1GB network, this figure will be only 1.3% of capacity. Note the school was not active this day--little or no student use of the network.
Our quiz was planned for reading questions first, then listening questions. It means all students do not try listening at the same time. This is an idea to save network traffic.


Netstat -- socket stats for connections
We had max 3920 connections of TIME-WAIT, and max 229 connections of ESTABLISHED.

CPU usage
We had 22% user (apache and mysql,etc.) usage of CPU at the peak.
We had enough idle of CPU all day.


System load
We had 6.38 load at the peak, but we didn't sustain that high load--just a spike.
If you have load problems, you may see a sustained load graph here.
Our server has Dual Xeon with Hyperthreading, it means the system has 4 virtual CPUs. So the capacity of load is 4.00
Therefore, at the peak time, 2.38 processes had to wait, but only briefly, as this was processed very soon.
Note that "system load" is not affected by the audio file loading (that affects "network traffic").
The peak system load happened at initial bootup to Windows & Moodle at the start of each session.
All client computers were opened to the moodle login page by a Windows login batch program
(we rebooted all clients between the test, because we wanted to clear the cache of previous data (answers)
and also to insure that all 300+ screens were at the same login point when students entered the room.


Memory and Swap
The test sessions took place between 9am and 4:30pm. Ignore the jump at 2am related to cron.
During the test, the maximum usage of memory was 1.8GB, minimum free memory was 2.19GB.
We didn't use swap. We could have used only 2GB memory to handle our load.
Notice that there were no spikes in the memory usage.
With eAccelerator working with PHP, this leveled the memory.



Apache Processes
This graph may give clues to why a MySQL might stop. If too many httpd processes are active,
the server might freeze (as in Mr. Amer's case).
Here, the maximum process number of apache httpd processes was 82.
We setup apache with "KeepAlive off" (**very important**).
If KeepAlive is on, the processes will continue to build up to an unsustainable point. The settings of MPM (we used prefork) are listed as below as reference; Do not use these numbers directly--all depend on your specific hardware and software.
StartServers        50 
MinSpareServers 5
MaxSpareServers 20
ServerLimit 300
MaxClients 300
MaxRequestsPerChild 4000