如何对 Amazon DynamoDB 中的间歇性超时错误进行故障排除?

上次更新日期:2022 年 8 月 19 日

当我使用 AWS SDK 与 Amazon DynamoDB 交互时,遇到间歇性连接超时或请求超时错误,如下所示:

  • 无法执行 HTTP 请求:连接到 dynamodb.xx-xxxx-x.amazonaws.com:443 [dynamodb.us-east-1.amazonaws.com/x.xxx.xxx.x] 失败:连接超时
  • com.amazonaws.SdkClientException:无法执行 HTTP 请求。在配置请求超时之前,请求未完成

解决方法

当您对 DynamoDB 进行 API 调用时,会出现以下情况:

  1. 您的应用程序使用本地 DNS 服务器解析 DynamoDB 端点。
  2. 获取 DynamoDB 端点的 IP 地址后,应用程序会连接到该端点并进行 API 调用。
  3. 端点会将此调用路由到其中一个后端节点。

在此过程中,API 调用可能会导致间歇性的连接超时或请求超时错误。在大多数情况下,由于网络问题或客户端上的 SDK 配置不正确,在 API 调用到达 DynamoDB 之前会发生客户端错误,进而导致超时错误。

要进一步对这些错误进行故障排除,请执行以下操作:

  • 根据您的使用案例和应用程序 SLA 调整 SDK HTTP 客户端参数。除了调整 connectionTimeoutrequestTimeoutmaxRetries 之外,您还可以调整 clientExecutionTimeoutsocketTimeoutClientExecutionTimeout 参数表示执行端到端操作和接收所需响应(包括可能发生的任何重试)所花费的最长允许总时间。请确保将此值设置为大于单个 requestTimeout 值。socketTimeout 参数表示 HTTP 客户端等待接收来自已建立 TCP 连接的响应的最长时间。有关更多信息,请参阅为延迟感知 Amazon DynamoDB 应用程序调整 AWS Java SDK HTTP 请求设置
  • 请确保发送持续流量或重复使用连接。当您没有进行请求时,考虑让客户端将虚假流量发送到 DynamoDB 表中。或者,您可以重复使用客户端连接或使用连接池。这些技术能保持内部缓存处于预热状态,这样有助于降低延迟并避免客户端上出现超时错误。例如,请参阅通过 Node.js 中的 Keep-Alive 重复使用连接
  • 查看您的 Amazon Virtual Private Cloud (Amazon VPC) 流日志,以检查在出现错误的时间段内是否有传入 DynamoDB 的流量。您还可以使用 AWS X-Ray 监控应用程序的延迟。

这篇文章对您有帮助吗?


您是否需要账单或技术支持?