動機
Java17 + レガシーバンドルサービスを実装したところ、GAEインスタンスのスピンアップが若干遅いと感じました。いつの間にかJava21もプレビューになっていましたので、あわせてインスタンス起動時間を再測定してみました。
また前回(GAEのインスタンス起動時間)はログで確認していたのですが、その方法の精度にも疑問を感じたので、測定方法も対象も変更しています。
今回はJava8がすでにサポート終了しているので、対象外としました。
測定条件・方法
- リージョン : 大阪
- ネットワーク : NTT Flets光 隼、実効300Mbps程度
- インスタンスクラスはF1。
- ServletのアプリはGoogleのサンプルに入っていたHelloWorld。
- SpringBootのアプリはGoogleのサンプルに入っていたHelloWorldそのままなので、バージョンは2.7.18。
- レガシーバンドルサービスは、Googleのサンプルは余計なコードが入っていたのでpom.xmlのみ参考にし、Hello World相当を自作。
- GoもHello World相当を自作、今回はフレームワークなしのパターンのみ。
- ブラウザからAjaxでリクエストし、JavaScriptでレスポンスが返るまでの時間を測定。
- スピンアップあり/なしの2パターンで、それぞれ10回測定し、平均値を算出。
- 前記2パターンの差から、スピンアップ+VM起動+フレームワーク起動の時間を計算。
測定結果
単位はすべてmsです。測定結果をtableにすると横長になってレイアウトが崩れたので、画像です。
まずはスピンアップあり。
続いてスピンアップなし。
そして、スピンアップ+VM起動+フレームワーク起動の時間。
Servlet | spring | レガシー | |
---|---|---|---|
Java11 | 625.2 | 4728.6 | 2098.6 |
Java17 | 599.8 | 4769.2 | 1655.0 |
Java21 | 630.2 | 4622.9 | 2451.5 |
Go1.20 | 176.9 | - | - |
所感
起動時間は 17<11≒21。わずかとはいえ、最新の21で悪化しているという意外な結果に。まだプレビューなのも影響しているのでしょうか。
SpringBoot
前回と比べてバージョンが2.6.6→2.7.18と変化していますが、結果はほぼ同じ。他はJava21で遅いのに、なぜかspringだけはJava21が最速と、一致しません。なぜ...
レガシーバンドルサービス
遅い気がしたのは気のせいではありませんでした。Java8のスピンアップが遅かったのはもしかして、Googleのカスタマイズのせいだったのではという疑惑が生じます。そしてJava21での遅延が目立って大きくなっています。残念過ぎる...
0 件のコメント:
コメントを投稿