Skip to content

Reduce default node idle timeout from 15 minutes to 30 seconds#13356

Open
JakeRadMSFT wants to merge 1 commit intodotnet:mainfrom
JakeRadMSFT:fix/reduce-idle-timeout
Open

Reduce default node idle timeout from 15 minutes to 30 seconds#13356
JakeRadMSFT wants to merge 1 commit intodotnet:mainfrom
JakeRadMSFT:fix/reduce-idle-timeout

Conversation

@JakeRadMSFT
Copy link
Member

@JakeRadMSFT JakeRadMSFT commented Mar 10, 2026

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 DefaultNodeConnectionTimeout from 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.cs has 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.

Copilot AI review requested due to automatic review settings March 10, 2026 06:44
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 DefaultNodeConnectionTimeout default 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.
@JakeRadMSFT JakeRadMSFT force-pushed the fix/reduce-idle-timeout branch from 3c85c5d to 1766d42 Compare March 10, 2026 07:02
@danmoseley
Copy link
Member

danmoseley commented Mar 14, 2026

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants