适用于 Java 的 AWS 开发工具包 Amazon Aurora Serverless 数据 API - java教程是冷启动和热启动的部分优化策略

首页 2024-07-10 02:15:58

介绍

关于如何在本系列之前使用它 Data API 和 AWS SDK for Java 从 Lambda 函数连接到 Amazon Aurora Serverless v2 在文章中,我们对冷启动和热启动进行了基本的测量,比较了 Data API 和 JDBC 冷启动和热启动之间的测量SnapStart 有或没有底漆都有效果。

在本系列的这一部分,我们将介绍冷启动和热启动的优化策略。

冷启动和热启动的优化策略

为了在冷启动时间和热启动时间之间找到良好的平衡,您可以尝试以下优化技术。我还没有使用它 Data API 和 Amazon Aurora Serverless v2 与 PostgreSQL 任何测量数据库,但使用 DynamoDB 类似场景的数据库。我将为我的相关文章提供参考。

  • 尝试不同的 Lambda 内存设置。到目前为止,所有的测量都被使用了。 Lambda 函数的 1024 MB 执行内存。通过不同的内存设置,您可能会以合理的价格获得更好的性能。请参阅我的文章,使用不同的文章 Lambda 使用内存设置 Java 21 测量冷启动、热启动和部署时间,以了解使用情况 DynamoDB 说明测量。
  • 尝试 Lambda 函数的不同 Java 编译选项。到目前为止,所有的测量都被使用了。 Lambda 函数编译选项“-XX: TieredCompilation -XX:TieredStopAtLevel=1”执行的。可使用名称 JAVA_TOOL_OPTIONS 环境变量方向 Lambda 函数提供了更多的其他选项,该变量具有不同的冷启动和热启动权衡。请参阅我的文章“使用” Java 21 用不同的编译选项测量冷启动和热启动,以了解使用情况 DynamoDB 说明测量。
  • 尝试不同的同步 HTTP 客户端通过 Data API 与数据库建立 HTTP 连接。到目前为止,所有测量都使用默认同步 HTTP 客户端(Apache)执行。还有其他选项,如 UrlConnection 和 AWS CRT HTTP 在客户端,它们为冷启动和热启动提供不同的性能权衡。

这是创建/构建 RdsDataClient 时使用 AWS CRT HTTP 客户端示例。 URLConection客户端可以类似设置。

RdsDataClient.builder().httpClient(AwsCrtHttpClient.create()).build()

另外,不要忘记使用正在使用的东西 HTTP 客户端的依赖项包含在客户端中 pom.xml 中,如下所示:

        <groupid>software.amazon.awssdk</groupid><artifactid>aws-crt-client</artifactid>依赖&gt;

请参考我的文章“使用不同步” HTTP 客户端从 Java 21 测量冷热启动,以获取说明、代码示例和使用 DynamoDB 进行测量。

立即学习“Java免费学习笔记(深入);

  • 探索数据 API 的异步 HTTP 客户端是否适合您的用例。默认异步 HTTP 客户端是 NettyNio。还有另一个选项 AWS CRT 异步 HTTP 客户端为冷启动和热启动提供不同的性能平衡。

它是在创建/构建 RdsDataAsyncClient 时使用异步 AWS CRT HTTP 客户端示例(我们需要使用异步 HTTP 在客户端的情况下构建)。

RdsDataAsyncClient.builder().httpClient(AwsCrtAsyncHttpClient.create()).build()

另外,不要忘记使用正在使用的东西 HTTP 客户端的依赖项包含在客户端中 pom.xml 中,如下所示:

        <groupid>software.amazon.awssdk</groupid><artifactid>aws-crt-client</artifactid>依赖&gt;

必须在这种情况下使用 Java 因此,异步编程模型(这本身就是讨论的主题) RDSDataAsyncClient 调用上述方法的每个方法都将返回 Java CompletableFuture 对象。请参阅我的文章,使用不同的异步 HTTP 客户端通过 Java 21 测量冷启动和热启动,以获得说明、代码示例和使用 DynamoDB 的测量。

对于所有潜在的优化策略,您可以 Lambda 函数上启用 SnapStart,并另外测量 DynamoDB 调用启动的影响,如本系列最后一篇文章 Data API meet SnapStart 中所述。

还要注意我在文章中描述的快照分层缓存对冷启动的影响。因为我总是部署新版本 Lambda 函数后提供 first 100 二次冷启动测量。当使用分层缓存时,我测量并描述了随着更多的后续调用,冷启动显著减少。经过一定数量的调用后,它是特定的 Lambda 保持版本不变。

结论

我们在这篇文章中使用它 Amazon Aurora Serverless v2 的数据 API 和适用于 Java 的 AWS 开发工具包提供了冷启动和热启动的优化策略,您可以探索该策略,以找出适合您使用的最佳性能。

以上是适用的 Java 的 AWS 开发工具包 Amazon Aurora Serverless 数据 API - 更多关于冷启动和热启动部分优化策略的细节,请关注其他相关文章!


p