はじめに
新たに作成した仮想環境でSpringBootのアプリケーションを起動したら、起動に4-5分かかってとても試験に使えない状態だたったので調査しました。
環境
- OS:CentOS 7.3
- Java:OpenJDK 1.8_191
- tomcat:8.5.24
- SpringBoot:1.5.12.RELEASE
解決法
以下の記事を参考にした。macの記事だけどLinuxでも同じことをやってみた。
MacOSでJDK8が重い問題
hostsファイルにhostnameを記載する
hostnameを確認
[user@hoge ~]$ hostname
hoge.local ←この値をコピーしておく
[user@hoge ~]$
hostsファイルに追記
[user@hoge ~]$ sudo vi /etc/hosts
localhostの行にコピーしておいたホスト名を追記
-127.0.0.1 localhost
+127.0.0.1 localhost hoge.local
保存して終了
実行してみる
war形式にしたSpringBootアプリケーションを配置したtomcatを起動して検証してみました。
処置前
catalina.out
[localhost-startStop-1] deployDirectory Deployment of web application directory [アプリ名] has finished in [212,763] ms
処置後
catalina.out
[localhost-startStop-1] deployDirectory Deployment of web application directory [アプリ名] has finished in [12,890] ms
比較
かなり高速化されました。
起動時間(ミリ秒) | 起動時間(秒) | |
---|---|---|
処置前 | 212,763 | 212 |
処置後 | 12,890 | 12 |
おわりに
参考記事に貼られていたstackoverflowの記事はSpringBootには関係のない記事に見えますが、相当な高速化がされましたね。
SpringBootの起動時に環境の情報を取得したりしているのでしょうか。参考記事的にはJDKの問題?(詳しい人教えてください)
この方法で、tomcatから実行しないjar形式のSpringBootアプリケーションの起動も高速化されました。