Subsection Gating Load Testing
The Subsection Gating feature adds additional relational database queries to retrieve milestones data during the page rendering cycle in both LMS and Studio. The purpose of this load testing is the verify that these additional queries do not significantly impact the performance of LMS page rendering under load.
Activation of the feature is controlled by an advanced setting on the course, "Enable Subsection Gating". Load tests were run under three separate conditions:
- Master branch of edx-platform
- Subsection gating branch of edx-platform with gating disabled
- Subsection gating branch of edx-platform with gating enabled
Each condition was tested with a simulated average production load and a simulated 1.5x peak production load. Testing was performed in the matasano environment with 3 app server instances. Assuming that average load is ~16k rpm in production and the production environment employs 16 app server, each app server should handle ~1000 rpm under average load. 1.5x peak production load is assumed to be ~35 rpm, thus in the testing environment the 1.5x tests generated ~6600 rpm.
Average Production Load
2 slaves
Number of users to simulate: 600
Hatch rate: 10
~3k rpm
Condition | Name | 50% | 66% | 75% | 80% | 90% | 95% | 98% | 99% | 100% |
---|---|---|---|---|---|---|---|---|---|---|
Master | GET courseware:index | 670 | 910 | 980 | 1000 | 1100 | 1100 | 1200 | 1300 | 2090 |
Subsection Gating Disabled | GET courseware:index | 650 | 890 | 960 | 990 | 1100 | 1100 | 1200 | 1200 | 2603 |
Subsection Gating Enabled | GET courseware:index | 670 | 930 | 1000 | 1000 | 1100 | 1200 | 1200 | 1300 | 3041 |
1.5x Peak Production Load
2 slaves
Number of users to simulate: 1250
Hatch rate: 10
~6.6k rpm
Condition | Name | 50% | 66% | 75% | 80% | 90% | 95% | 98% | 99% | 100% |
---|---|---|---|---|---|---|---|---|---|---|
Master | GET courseware:index | 890 | 1100 | 1200 | 1300 | 1700 | 1900 | 2200 | 2400 | 7995 |
Subsection Gating Disabled | GET courseware:index | 720 | 970 | 1100 | 1100 | 1300 | 1400 | 1600 | 1700 | 7634 |
Subsection Gating Enabled | GET courseware:index | 730 | 990 | 1100 | 1100 | 1300 | 1500 | 1600 | 1700 | 7735 |