Performance Improvements in this Release
Here is a report demonstrating the performance improvements made in this release.
Performance Improvements: 0.143.0 vs 0.144.0
Notice in the third graph, titled "Headroom plot" that at 5s latency, throughput has increased from ~1000 requests per second to more than 3000 requests per second!
The report is generated using a Jupyter Notebook provided with our Routing Performance Release.
Raw results for the performance tests can be found in the following files:
The report can be regenerated from the test results by following instructions in the README for Routing Performance Release.
The tests were run against a standalone Gorouter and a static app running on a raw VM, not against a full Cloud Foundry deployment. The test environment was comprised of two deployments on AWS:
- We use a modified cf-release manifest to deploy Gorouter and NATS only. Gorouter is run on our default VM type of
c3.large
. - Load was generated using the Routing Performance Release, which also includes the static backend, and a job that registers a configurable number of routes. The report above shows results of a test with one route in the routing table.
Release Enhancements
Enhancements that have improved performance of Gorouter throughput and latency
- Gorouter now supports idle keepalive connections, and operators can control the maximum idle connections details
- Gorouter now uses Uber's Zap library for logging, instead of
cloudfoundry/lager
details - Dropsonde bumped from
d802ac9
to37777ab
details - Copying of response from backend to client has been optimized in Gorouter details
Misc
- Gorouter and Route-registrar jobs will now consume
nats
properties from BOSH via Links if provided - HAProxy in TCP Router has been upgraded to 1.5.19 and PCRE to 8.40 details
- Manifest generation for routing release no longer fails when cf-release manifest does not contain
properties.databases
details - Gorouter can now be run in garden-runc containers details
- Gorouter now logs status code of non-200 responses from route services details
- Gorouter logs now contain messages
start-pruning-routes
andfinished-pruning-routes
instead ofstart-pruning-droplets
andfinished-pruning-droplets
details - Route-registrar logs now contain the NATS server hostname and port for disconnected and reconnected events, and when NATS is unavailable on initial connect details
- Removed unused blob for golang1.6 details
Updated Licenses and Notices
- Updated LICENSE for
routing-release
details - Updated NOTICE for
src/code.cloudfoundry.org/cf-routing-test-helpers
details - Added NOTICE for
src/code.cloudfoundry.org/cf-tcp-router
details - Updated LICENSE for
src/code.cloudfoundry.org/gorouter
details - Added NOTICE for
src/code.cloudfoundry.org/multierror
details - Added NOTICE and updated LICENSE for
src/code.cloudfoundry.org/route-registrar
details - Added NOTICE and updated LICENSE for
src/code.cloudfoundry.org/routing-acceptance-tests
details - Updated NOTICE for
src/code.cloudfoundry.org/routing-api
details - Added NOTICE for
src/code.cloudfoundry.org/routing-info
details - Added NOTICE for
src/code.cloudfoundry.org/tcp-emitter
details - Added NOTICE for
src/code.cloudfoundry.org/trace-logger
details - Updated NOTICE for
src/code.cloudfoundry.org/uaa-go-client
details
Manifest Property Changes
gorouter
Note: Gorouter will now consume nats
properties from BOSH via Links if provided
0.143.0 | 0.144.0 | Default Value |
---|---|---|
did not exist | router.max_idle_connections
| 0 |
route_registrar
Note: route_registrar will now consume nats
properties from BOSH via Links if provided