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:

  1. Master branch of edx-platform
  2. Subsection gating branch of edx-platform with gating disabled
  3. 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

Locust Data

ConditionName50%66%75%80%90%95%98%99%100%
MasterGET courseware:index670910980100011001100120013002090
Subsection Gating DisabledGET courseware:index65089096099011001100120012002603
Subsection Gating EnabledGET courseware:index6709301000100011001200120013003041

1.5x Peak Production Load

2 slaves
Number of users to simulate: 1250
Hatch rate: 10
~6.6k rpm

Locust Data

ConditionName50%66%75%80%90%95%98%99%100%
MasterGET courseware:index89011001200130017001900220024007995
Subsection Gating DisabledGET courseware:index7209701100110013001400160017007634
Subsection Gating EnabledGET courseware:index7309901100110013001500160017007735