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.
68 lines
3.3 KiB
Plaintext
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
|