Files
spring-boot-demo/spring-boot-startup-time/docs/output/02-startup-tree.txt
Ankur Mhatre 958b401f0f Spring Boot startup time: bean-by-bean diagnosis, and one directory per post
Adds spring-boot-startup-time/, the companion project for BLOG-618: a runnable
Spring Boot 4.1.1 application on JDK 25 that installs BufferingApplicationStartup
and FlightRecorderApplicationStartup behind a system property, and a /diag/startup
endpoint that computes step self time -- the number /actuator/startup does not give
you and the one that names the actual culprits.

Captured under docs/output/: the step tree sorted both ways, the same startup as JFR
events, a +5000-class experiment putting 0.11 ms per scanned class on the classpath
scan tax, the silent truncation a 2048-step buffer performs, and JDK 25 AOT cache
timings (6.93 s to 4.82 s). Post body and metadata live in post/.

Moves the existing Actuator project into actuator-in-production/ so the repository
holds one directory per article; the root README is now an index.
2026-09-05 00:17:37 +05:30

68 lines
3.3 KiB
Plaintext

=== Boot's own startup line ===
Started StartupDiagnosisApplication in 6.6 seconds (process running for 7.4)
=== /diag/startup ===
recorded steps: 400
-- self time by step name (self = duration minus direct children) --
self ms count step
4253.68 361 spring.beans.instantiate
1014.51 1 spring.context.config-classes.parse
402.81 1 spring.boot.application.environment-prepared
160.39 1 spring.boot.webserver.create
153.07 1 spring.boot.application.started
113.74 1 spring.context.refresh
95.72 1 spring.data.repository.proxy
51.50 6 spring.beans.smart-initialize
43.85 1 spring.data.repository.scanning
35.02 1 spring.boot.application.starting
31.10 9 spring.context.bean-factory.post-process
22.48 1 spring.context.beandef-registry.post-process
18.09 1 spring.context.beans.post-process
13.78 1 spring.boot.application.context-loaded
12.92 1 spring.data.repository.composition
5.15 5 spring.data.repository.postprocessor
4.70 1 spring.data.repository.init
0.89 1 spring.data.repository.target
0.68 1 spring.context.config-classes.enhance
0.48 1 spring.boot.application.ready
0.42 1 spring.data.repository.postprocessors
0.26 1 spring.boot.application.context-prepared
0.07 1 spring.data.repository.metadata
-- slowest individual steps by SELF time (the culprits) --
self ms total ms step / tags
1413.83 1803.62 spring.beans.instantiate &entityManagerFactory
1014.51 1066.42 spring.context.config-classes.parse
503.84 503.84 spring.beans.instantiate tariffCacheWarmer
402.81 402.81 spring.boot.application.environment-prepared
326.96 326.96 spring.beans.instantiate keystoreLoader
268.41 312.88 spring.beans.instantiate dataSourceScriptDatabaseInitializer
204.92 470.83 spring.beans.instantiate orderRepository
160.39 460.45 spring.boot.webserver.create
153.07 153.07 spring.boot.application.started
113.74 5829.88 spring.context.refresh
95.72 101.29 spring.data.repository.proxy
64.25 64.25 spring.beans.instantiate jpaMappingContext
-- slowest individual steps by TOTAL time (the containers) --
total ms self ms step / tags
5829.88 113.74 spring.context.refresh
1803.62 1413.83 spring.beans.instantiate &entityManagerFactory
1344.76 18.09 spring.context.beans.post-process
1088.90 22.48 spring.context.beandef-registry.post-process
1066.42 1014.51 spring.context.config-classes.parse
514.24 10.41 spring.beans.instantiate reportTemplateRegistry
503.84 503.84 spring.beans.instantiate tariffCacheWarmer
479.45 8.62 spring.beans.instantiate orderController
470.83 204.92 spring.beans.instantiate orderRepository
460.45 160.39 spring.boot.webserver.create
402.81 402.81 spring.boot.application.environment-prepared
326.96 326.96 spring.beans.instantiate keystoreLoader
=== actuator's own endpoint: GET peeks, POST drains ===
GET /actuator/startup -> events in response: 400
POST /actuator/startup -> events in response: 400
POST /actuator/startup -> events in response: 0
GET /actuator/startup -> events in response: 0