Versions Compared
Key
- This line was added.
- This line was removed.
- Formatting was changed.
Summary
This article describes the methodology and result of performance testing on the Ed-Fi ODS / API v3.2 (specifically, against release v3.24.0).
In brief, performance testing did not uncover any significant concerns in performance relative to versions previous 3.0.0 and 3.1.0.x versions.
Article Contents:
Table of Contents | ||||
---|---|---|---|---|
|
Test Methodology
Volume Tests
Volume testing of v3.24.0 occurred in July and August 2019May 2020, using the Locust-based 3.x performance testing framework (an Exchange contribution available in GitHub). This volume test covers the resources and HTTP verbs described in the Ed-Fi SIS vendor certification process. It runs for 30 minutes, spawning 30 clients that run simultaneously to perform tens of thousands of operations.
Data Set
Northridge-inspired v3 data set, which contains 21,628 students.
- EdFi_ODS_3.2.0Ods_Northridge_ChangeQueriesv34.bacpac
- EdFi_Ods_3.2.0_Northridge.bacpac_Northridge_v34_PG11.sql
Azure Test Lab Virtual Machines
The test lab environment used a three-server setup: one each for the database, web applications, and the Locust performance testing. VM "Sizes" listed here, such as "DS11_v2", are Microsoft-defined names for the specs of an Azure VM. Key specs are listed beside these size names. These sizes were chosen as their specs are comparable to those of the Vendor Certification VMs but have SSD disks to more closely match a production environment.
Database VM
Image: Free SQL Server License: SQL Server 2017 Developer and PostgreSQL 11.8 on Windows Server 2016
Size: DS11_v2 (Standard, 2 vcpus, 14 GB ram, 6400 max iops, 28GB 127GB local SSD)
Web VM
Image: [smalldisk] Windows Server 2016 Datacenter
Size: B2ms (Standard, 2 vcpus, 8 GB ram, 4800 max iops, 16GB 127GB local SSD)
Test Runner VM
Image: [smalldisk] Windows Server 2016 Datacenter
Size: B2ms (Standard, 2 vcpus, 8 GB ram, 4800 max iops, 16GB 127GB local SSD)
Test Results
Experimentation Summary
In addition to testing These tests included the out-of-the-box installation of 3.0.0, 3.12.0, and 3.20, a few experiments were run in order to better understand possible performance impact. Two recent changes in the ODS/API affected the way it interacts with SQL Server; these changes were reverted for the API 3.2.0 , singly and in combination, to ensure that updates were not harmful.A final test on 3.24.0 installed the Change Queries feature.
Version | Execution Date | Variation | # of Requests | Mean Response Time in ms | Max Response Time in ms |
---|---|---|---|---|---|
3. |
2.0 |
05/ |
01/2020 | SQL Server ODS | 124, |
683 |
105 |
2660 |
3. |
3. |
0 |
05/ |
Delete section/{id}
12513
Delete gradiginperiod/{1}
01/2020 | SQL Server ODS | 147,923 | 90 | 1647 | |
3.4.0 | 05/08/2020 | SQL Server ODS | 130,160 | 129 | 1884 |
3.4.0 | 05/21/2020 | PostgreSQL ODS | 117,741 | 191 | 2809 |
Key Take-Aways
- No two executions of the same code/configuration will result in the exact same mean response time — there is a degree of randomness in the Locust-based clients. Thus the difference between 130 ms, 135 ms, and 136 ms is not significant.
- That said, the use of NHibernate's 2008 dialect instead of the (new default) 2012 dialect does appear to have a negative impact. In other words, changing the dialect to 2012 was a good thing.
- Change queries adds update and delete triggers to these tables. It was hypothesized that these triggers would cause a noticeable slowdown in performance. In fact the performance appears to be better. Most likely this is a random change that is not meaningful. At these volumes, change queries do not appear to cause meaningful performance degradation. However, additional testing with higher volumes of updates and deletes could still turn up some impactPerformance PostgreSQL backed ODS / API were shown to be comparable to that of the ODS / API backed by SQL Server ODS.
Server Stats
Overall the web and database server statistics do not show any serious concerns. Database memory was higher for v3.2.0 than versions 3.0 and 3.1, despite reboots between each test execution. However, with the way that SQL Server ties up as much memory as it can, this is not immediately indicative of a problem.
Web Server Stats
In these stats below, the web server CPU load for v3.2.0 testing is surprising. Given that we didn't see a clear impact in the test results, it is hard to say that this is ultimately important.
Image Removed
The CPU load on the web server for the canonical v3.2.0 test execution appears to be an anomaly. The following chart compares all five runs on the v3.2.0 ODS/API.
Image Removed
Image Removed
Image Added
Image Added
Database Server Stats
Image RemovedImage AddedImage Removed
Image Added