Skip to content

Conversation

@qnnn
Copy link
Contributor

@qnnn qnnn commented Jan 13, 2026

I have several existing applications that are still using Bootstrap for configuration refresh (version 3.1.x). Recently, I noticed that when there is a large amount of configuration, triggering a refresh can cause a significant CPU spike. I observed the same behavior in the newer version (2025.1.0) as well. The main overhead seems to come from ConfigurationProperties binding.

In addition, the cost of BootstrapPropertySource.getPropertyNames() is also quite noticeable. Since BootstrapPropertySource is essentially an enumerable wrapper, it does not seem necessary to perform de-duplication in getPropertyNames(). Therefore, this PR proposes changing the implementation to directly return the delegate’s getPropertyNames() result, in order to reduce some of the overhead.

Here is the minimal reproducible project along with its corresponding flame graph.

demo.zip(version 2025.1.0)
ps: The refresh is triggered via the refresh endpoint.

flamegraph.html

image-20260113210832210

@qnnn qnnn force-pushed the main branch 2 times, most recently from c61a128 to e90f0af Compare January 13, 2026 14:03
@qnnn qnnn closed this Jan 13, 2026
@qnnn qnnn reopened this Jan 13, 2026
…Names.

Signed-off-by: qnnn <qiunan@cmbchina.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants