Skip to content

Startup performance differences between Spring Boot versions and main class vs jar file formats [SPR-14956] #19523

@spring-projects-issues

Description

@spring-projects-issues

Bernd Götz opened SPR-14956 and commented

While I was reproducing what Josh Long was presenting in https://www.infoq.com/presentations/spring-boot-cloud-case-study, I observed some not so nice performance differences between Spring Boot 1.3.5 and 1.4.2, and the second dimension, main class vs jar file execution. I've measured the differences for all four services, config, eureka, reservation service and reservation client. Please find the numbers below.

I'm actually seeing similar performance numbers when running our Spring Boot applications
in Websphere Liberty. It seems to be connected to how the containers are taking up the involved libraries. I would not complain too much but we have to use Liberty for our local development because we depend on a Liberty/Websphere feature for our security integration for backend services. That's why we can't fall back to main class execution.

Moreover, it will always run as a war file (and maybe sometimes in the future as a jar file) in CloudFoundry, so any slow start there is also not very nice.

Any insights on this? Is this a known issue? Any idea what the root cause could be?

Regards,
Bernd

Numbers:

config-service:

Spring Boot 1.3.5/Brixton.RELEASE:
main class:
Started ConfigServiceApplication in 3.191 seconds (JVM running for 3.564)

jar:
Started ConfigServiceApplication in 5.424 seconds (JVM running for 6.105)
Started ConfigServiceApplication in 5.89 seconds (JVM running for 6.574)

-> factor 1 to 2

Spring Boot 1.4.2/Camden.SR2:
main class:
Started ConfigServiceApplication in 4.178 seconds (JVM running for 4.715)
Started ConfigServiceApplication in 4.192 seconds (JVM running for 4.598)

jar:
Started ConfigServiceApplication in 17.426 seconds (JVM running for 19.412)
Started ConfigServiceApplication in 16.899 seconds (JVM running for 18.793)

-> factor 4

eureka-service:

Spring Boot 1.3.5/Brixton.RELEASE:
main class:
Started EurekaServiceApplication in 5.324 seconds (JVM running for 5.776)
Started EurekaServiceApplication in 5.308 seconds (JVM running for 5.737)

jar:
Started EurekaServiceApplication in 10.352 seconds (JVM running for 11.322)
Started EurekaServiceApplication in 9.605 seconds (JVM running for 10.47)

-> factor 2

Spring Boot 1.4.2/Camden.SR2:
main class:
Started EurekaServiceApplication in 6.223 seconds (JVM running for 6.695)
Started EurekaServiceApplication in 5.976 seconds (JVM running for 6.501)

jar:
Started EurekaServiceApplication in 30.074 seconds (JVM running for 32.498)
Started EurekaServiceApplication in 29.58 seconds (JVM running for 31.99)

-> factor 5 to 6

reservation-service:

Spring Boot 1.3.5/Brixton.RELEASE:
main class:
Started ReservationServiceApplication in 14.975 seconds (JVM running for 15.457)
Started ReservationServiceApplication in 13.45 seconds (JVM running for 13.989)

jar:
Started ReservationServiceApplication in 25.705 seconds (JVM running for 26.753)
Started ReservationServiceApplication in 27.056 seconds (JVM running for 28.273)

-> factor 2

Spring Boot 1.4.2/Camden.SR2:
main class:
Started ReservationServiceApplication in 16.472 seconds (JVM running for 17.012)
Started ReservationServiceApplication in 15.042 seconds (JVM running for 15.517)

jar:
Started ReservationServiceApplication in 83.614 seconds (JVM running for 86.423)
Started ReservationServiceApplication in 82.873 seconds (JVM running for 85.814)

-> factor 5 !!!

reservation-client:

Spring Boot 1.3.5/Brixton.RELEASE:
main class:
Started ReservationClientApplication in 11.776 seconds (JVM running for 12.24)
Started ReservationClientApplication in 12.212 seconds (JVM running for 12.699)

jar:
Started ReservationClientApplication in 22.645 seconds (JVM running for 23.862)
Started ReservationClientApplication in 21.705 seconds (JVM running for 22.945)

-> factor 2

Spring Boot 1.4.2/Camden.SR2:
main class:
Started ReservationClientApplication in 15.828 seconds (JVM running for 16.405)
Started ReservationClientApplication in 15.606 seconds (JVM running for 16.149)

jar:
Started ReservationClientApplication in 73.462 seconds (JVM running for 76.298)
Started ReservationClientApplication in 72.955 seconds (JVM running for 75.935)

-> factor 5 !!!


No further details from SPR-14956

Metadata

Metadata

Assignees

Labels

status: invalidAn issue that we don't feel is valid

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions