在本系列的第 2 部分中,我們探索如何使用包含 GraalVM Native Image 和 GraalVM 21 運行時的自訂運行時來開發和部署純 Lambda 函數(不使用 Spring Boot 3 等任何框架)。
在本文中,我們將使用這種方法來測量 Lambda 函數的性能(冷啟動和熱啟動)。
對於我們的測量,我們將使用第 2 部分中的範例應用程序,並為所有 Lambda 函數提供 1024 MB 記憶體。
下面的實驗結果是基於使用Lambda 函數GetProductByIdWithPureJava21GraalVMNativeImageLambda 在1 小時內重現超過100 次冷啟動和大約100.000 次熱啟動,該函數映射到負責檢索產品的Java Lambda 處理程序類別(儲存在DynamoDB 中)透過其id。為此,我使用了負載測試工具,嘿,但您可以使用任何您想要的工具,例如 Serverless-artillery 或 Postman。
冷 (c) 和暖 (m) 開始時間(以毫秒為單位):
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 |
---|---|---|---|---|---|---|---|---|---|---|---|
525.77 | 532.12 | 542.32 | 632.56 | 635.73 | 636.11 | 4.16 | 4.69 | 5.46 | 12.30 | 37.25 | 211.83 |
在本文中,使用包含 GraalVM Native Image 和 GraalVM 21 運行時的自訂運行時,測量了具有 1024 MB 記憶體的純 Lambda 函數的效能(冷啟動和熱啟動)。
將這些效能測量值與文章《使用Java 21 測量冷啟動和熱啟動》進行比較,使用不同的Lambda 記憶體設定(啟用SnapStart 並使用DynamoDB 請求啟動),我們發現我們的冷啟動和熱啟動時間是迄今為止最低的使用GraalVM Native Image 與使用帶有SnapStart 的純Lambda 函數進行比較並描述啟動。當然,SnapStart 和 GraalVM Native Image 兩種方法也有不同的優點和缺點,我們將在單獨的文章中探討。
在發佈時,還提供了較新的版本(例如GraalVM 23 運行時),因此您可以按照本系列第2 部分中的說明進行版本更改並重新編譯GraalVM Native 映像,並重新測量Lambda 性能.
在本系列的下一篇文章中,我們將探討不同 Lambda 記憶體設定(從 256 到 1536 MB)對 Lambda 效能的影響,因為記憶體設定也會嚴重影響執行 Lambda 函數的成本。
以上是帶有 GraalVM Native Image 的 Lambda 函數 - 部分緩解冷啟動和熱啟動的詳細內容。更多資訊請關注PHP中文網其他相關文章!