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.
This commit is contained in:
67
spring-boot-startup-time/docs/output/02-startup-tree.txt
Normal file
67
spring-boot-startup-time/docs/output/02-startup-tree.txt
Normal file
@@ -0,0 +1,67 @@
|
||||
=== 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
|
||||
Reference in New Issue
Block a user