在我們系列文章的第 12 部分中,我們探討如何使用包含 GraalVM 本機映像的自訂執行時間來開發和部署 Lambda 函數,以及從 Spring Cloud Function AWS 應用程式建立的 GraalVM 22 執行時間。在第 13 部分中,我們測量了具有 1024 MB 記憶體的此類 Lambda 函數的效能(冷啟動和熱啟動)。
在本文中,我們將使用此方法在 256 到 1536 MB 之間的不同記憶體設定下測量 Lambda 函數的效能(冷啟動和熱啟動),以探索成本和效能之間的權衡。
我們將重複使用本系列文章第 13 部分中描述的完全相同的實驗,但記憶體設定在 256 到 1536 MB 之間。
以下是實驗結果:
冷 (c) 和暖 (m) 開始時間(以毫秒為單位):
Memory setting | c p50 | c p75 | c p90 | c p99 | c p99.9 | c max | w p50 | w p75 | w p90 | w p99 | w p99.9 | w max |
---|---|---|---|---|---|---|---|---|---|---|---|---|
256 MB | 1634.84 | 1659.54 | 1691.35 | 1778.03 | 1785.15 | 1785.7 | 6.56 | 6.99 | 7.63 | 18.33 | 372.54 | 857.7 |
512 MB | 1244.44 | 1278.48 | 1313.45 | 1414.28 | 1421.36 | 1421.94 | 6.66 | 7.10 | 7.94 | 25.41 | 181.86 | 414.99 |
768 MB | 1111.53 | 1126.07 | 1139.66 | 1192.08 | 1202.86 | 1203.07 | 6.58 | 6.93 | 7.48 | 12.46 | 115.18 | 278.91 |
1024 MB | 1051.03 | 1061.58 | 1080.86 | 1119.34 | 1149.45 | 1230.28 | 6.45 | 6.77 | 7.33 | 12.50 | 90.92 | 218.17 |
1280 MB | 1022.02 | 1035.39 | 1058.41 | 1065.76 | 1104.64 | 1174.79 | 6.58 | 6.96 | 7.54 | 12.37 | 70.77 | 271.13 |
1536 MB | 1009.83 | 1029.20 | 1048.41 | 1161.32 | 1116.24 | 1148.24 | 6.66 | 7.04 | 7.75 | 12.08 | 63.03 | 215.62 |
在本文中,使用包含GraalVM 本機映像的自訂運行時測量Lambda 函數的冷啟動和熱啟動,GraalVM 21 運行時是從第12 部分中介紹的Spring Cloud Function AWS 應用程式創建的,具有256 到1536 MB 之間的不同記憶體設定。
我們觀察到與 GraalVM Native Image 的 Pure Lambda 函數 - 使用不同 Lambda 記憶體設定測量冷啟動和熱啟動一文中所述的類似情況。 對於較低的 Lambda 函數記憶體設定(例如 256 或 512 MB),熱啟動時間也非常接近,其中差異主要在高百分位 (>= p90) 上可見。 256 和 512 MB 的冷啟動時間相當長,從 768 MB 內存開始,通過為 Lambda 提供更多內存,冷啟動時間只會減少一點,但對於大於 1024 MB 的內存,沒有任何明顯差異。 根據您的效能要求,您可以為 Lambda 提供少於 1024 MB 的記憶體(正如我們最初在範例應用程式中給出的那樣),並且使用 768 MB 甚至更少的記憶體可以實現非常好的性價比。
我們也分享了第 13 部分結論中描述的相同觀察結果。當我們將冷啟動時間與文章使用GraalVM Native Image 的純Lambda 函數- 使用不同Lambda 內存設定測量冷啟動和熱啟動中測量的時間進行比較時( (其中Lambda 函數不使用Spring Boot 等任何框架),使用純Lambda 函數時,我們發現每個百分位數的值降低約0.5-0.6 秒。應用程式具有一定的最佳化潛力,因為我無法解釋它們之間的冷啟動時間如此大的差異。 Lambda 和GraalVM Native 映像一起使用可能只會導致冷啟動時間增加0.2-0.3 倍。
在發布本文時,正在使用的框架和工具的新版本已經可用(GraalVM 23 運行時、Spring Boot 3.4 和Spring Cloud Function 庫的版本更新),因此您可以進行版本更改並重新編譯GraalVM Native按照本系列第2 部分的說明進行影像繪製並重新測量效能。我還將很快發布這些版本的新測量結果並升級範例應用程式。
以上是AWS Lambda 上的 Spring Boot 應用程式 - 使用 GraalVM 本機映像和記憶體設定測量冷啟動和熱啟動部分的詳細內容。更多資訊請關注PHP中文網其他相關文章!