Reduce default node idle timeout from 15 minutes to 30 seconds#13356
Open
JakeRadMSFT wants to merge 1 commit intodotnet:mainfrom
Open
Reduce default node idle timeout from 15 minutes to 30 seconds#13356JakeRadMSFT wants to merge 1 commit intodotnet:mainfrom
JakeRadMSFT wants to merge 1 commit intodotnet:mainfrom
Conversation
Contributor
There was a problem hiding this comment.
Pull request overview
This PR reduces the default amount of time MSBuild worker nodes will wait for a host connection (and therefore remain alive when idle) from 15 minutes to 30 seconds, improving resource reclamation on machines that spawn many nodes (notably macOS/Unix scenarios).
Changes:
- Lowered
DefaultNodeConnectionTimeoutdefault from 900,000ms (15 min) to 30,000ms (30 sec).
Idle MSBuild worker nodes currently linger for 15 minutes, consuming memory and PIDs. On macOS with 12 cores, a single solution build can leave 10+ idle nodes resident for 15 minutes. With concurrent builds (e.g. repo tooling), this compounds to 100+ idle nodes. 30 seconds is long enough to keep nodes warm for incremental rebuilds (the common dev loop) while reclaiming resources much sooner. This is a behavioral change that warrants discussion — split out from the other Unix node reuse bugfixes per reviewer request.
3c85c5d to
1766d42
Compare
Member
|
End of an era, glad to see this. Particularly in the age of Copilot CLI which can be doing several full builds concurrently as it works on bugs concurrently, leaving me with 100 idle processes. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Problem
Idle MSBuild worker nodes linger for 15 minutes (
DefaultNodeConnectionTimeout), consuming memory and PIDs. On macOS with 12 cores, a single solution build can leave 10+ idle nodes resident for 15 minutes. With 5-10 concurrent builds this compounds to 50-100+ idle nodes.Change
Reduce
DefaultNodeConnectionTimeoutfrom 15 minutes to 30 seconds.30 seconds is long enough to keep nodes warm for incremental rebuilds (the common dev loop) while reclaiming resources much sooner.
Note:
src/MSBuildTaskHost/CommunicationsUtilities.cshas a separate copy of this timeout — it still defaults to 15 minutes. The TaskHost only runs on .NET Framework/Windows where the impact is different.This is a behavioral change split out from #13336 for separate discussion per @baronfel's request.