libraries/doltcore/remotestorage: Improve connection reuse when fetching chunks from remote storage. #8522
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Improves performance of fetches from DoltHub, sql-server, and doltlab.
Improves some situations where routers and network access points do not respond well to clients which open a great number of connections to the same TCP endpoint, many of which live for a very short period of time.
http.DefaultClient comes with a default MaxIdleConnsPerHost of 2. Fetching with a high number of concurrent downloads results in many connections not being reused efficiently because they cannot get back into the idle pool because it is so small. Here we increase the MaxIdleConnsPerHost to be large enough so that our active connections during a fetch will fit within it.
Note: S3 limits a single HTTP connection to 100 requests, after which it is closed server-side. So currently dolt can still require a large number of new connections over the course of a pull, and the rate at which they are opened will depend on a number of factors including available throughput, round trip time resolving storage locations, etc. But this change will always be a big improvement over the old behavior.