Performance Regression Observed in NGINX HTTP/3 After Switching to QUIC Cubic Congestion Control?
We conducted HTTP/3 performance tests across NGINX versions 1.25.5, 1.27.4, 1.27.5, 1.28.0, and 1.29.0 under consistent network emulation conditions shown above. Starting from version 1.27.5, NGINX switched its QUIC congestion control algorithm from reno to cubic. Interestingly, we observed a significant drop in performance in versions using cubic, especially under packet loss conditions. While we are unsure whether this is a coincidence or the root cause, we suggest that future NGINX releases provide a configuration parameter allowing users to select the QUIC congestion control algorithm based on their deployment needs.
Test Results
| Version | No Packet Loss (sec) | 1% Packet Loss (sec) |
|---|---|---|
| nginx-1.25.5 | 12.329 | 21.339 |
| nginx-1.27.4 | 13.592 | 24.173 |
| nginx-1.27.5 | 27.251 | 221.720 |
| nginx-1.28.0 | 19.456 | 195.452 |
| nginx-1.29.0 | 19.498 | 186.282 |