Spring Bootの起動時間を短縮する

Dev/Java/Spring Boot
Java
Spring Boot

更新日時 : 2022/05/30 03:11
投稿日時 : 2021/03/28 05:20

概要

  • Spring Bootの起動時間を短縮する方法をまとめる
  • 既にあるアプリケーションの動作をなるべくそのまま短縮するようにする
    • 解説は一旦あとで
  • 厳密に何度も計測したわけではないかつローカルのMacbookで実行しただけなので注意
    • できればあとで実行環境で計測する

実施前

起動時間

6.289 seconds

対象アプリ
https://github.com/vagivagi/blog-api

  • Java11
  • Spring Boot 2.3.1.RELEASE
  • ローカルでh2dbを起動
2021-03-28 14:01:47.799  INFO 31401 --- [           main] o.vagivagi.blog.api.BlogApiApplication   : Started BlogApiApplication in 6.289 seconds (JVM running for 7.178)

起動オプション

XX:TieredStopAtLevel

  • 4.397 seconds
2021-03-28 14:10:26.695  INFO 31556 --- [           main] o.vagivagi.blog.api.BlogApiApplication   : Started BlogApiApplication in 4.397 seconds (JVM running for 5.156)

noverify

  • 5.822 seconds
2021-03-28 14:11:52.028  INFO 31565 --- [           main] o.vagivagi.blog.api.BlogApiApplication   : Started BlogApiApplication in 5.822 seconds (JVM running for 6.59)

Spring Bootオプション

Beanの遅延初期化

  • 3.299 seconds
spring.main.lazy-initialization=true
2021-03-28 14:13:00.796  INFO 31582 --- [           main] o.vagivagi.blog.api.BlogApiApplication   : Started BlogApiApplication in 3.299 seconds (JVM running for 3.947)

実施後

  1. 4.871 seconds
  2. 4.664 seconds
  3. 4.5 seconds

上記のすべてのオプション設定した場合、3回程実施して5秒以下に気持ち落ち着いたか?
もともと30秒もかかっていないので、どれくらい効果があるかいまいちわからん。
今度もっと遅いアプリで試してみる。

2021-03-28 14:14:11.812  INFO 31589 --- [           main] o.vagivagi.blog.api.BlogApiApplication   : Started BlogApiApplication in 4.871 seconds (JVM running for 6.188)
2021-03-28 14:14:48.893  INFO 31594 --- [           main] o.vagivagi.blog.api.BlogApiApplication   : Started BlogApiApplication in 4.664 seconds (JVM running for 5.569)
2021-03-28 14:15:35.969  INFO 31605 --- [           main] o.vagivagi.blog.api.BlogApiApplication   : Started BlogApiApplication in 4.5 seconds (JVM running for 5.217)