在我们系列文章的第 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 秒。我个人认为我的示例 Spring Boot 3 应用程序具有一定的优化潜力,因为我无法解释它们之间的冷启动时间如此大的差异。我的(也许是天真的)期望是,与使用纯 Lambda 函数相比,将 Spring Boot 3 框架与 AWS 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中文网其他相关文章!