Amazon dynamodb Amazon DynamoDB异步客户端http度量

Amazon dynamodb Amazon DynamoDB异步客户端http度量,amazon-dynamodb,metrics,Amazon Dynamodb,Metrics,我使用的是Amazon SDK(Java)DynamoDB异步客户端v2.10.14,具有自定义配置: DynamoDbAsyncClientBuilder = DynamoDbAsyncClient .builder() .region(region) .credentialsProvider(credentialsProvider) .httpClientBuilder(

我使用的是Amazon SDK(Java)DynamoDB异步客户端v2.10.14,具有自定义配置:

DynamoDbAsyncClientBuilder = DynamoDbAsyncClient
            .builder()
            .region(region)
            .credentialsProvider(credentialsProvider)
            .httpClientBuilder(
                NettyNioAsyncHttpClient.builder()
                    .readTimeout(props.readTimeout)
                    .writeTimeout(props.writeTimeout)
                    .connectionTimeout(props.connectionTimeout)
            )
我经常遇到连接超时:

io.netty.channel.ConnectTimeoutException: connection timed out: dynamodb.region.amazonaws.com/1.2.3.4:443
我想这是由于我的设置,但我需要积极的超时。我曾经遇到过同样的问题,不管怎样,默认值(只是花了更长的时间)。我想知道为什么我会陷入这种境地。我的直觉是,这与连接池耗尽或池的其他问题有关


是否有任何指标可供我监控?

您的应用程序似乎是一个“延迟感知DynamoDB客户端应用程序”。底层HTTP客户端行为需要针对其重试策略进行调整。幸运的是,AWS Java SDK提供了对HTTP客户端行为和重试策略的完全控制,本文档有助于解释如何优化底层HTTP客户端的AWS Java SDK HTTP请求设置和参数:

在本文档中,它提供了一个示例,说明如何优化在ClientConfiguration对象创建期间设置的五个HTTP客户端配置参数,并对每个参数进行了非常全面的讨论:

  • 连接超时
  • 客户执行超时
  • 请求超时
  • SocketTimeout
  • DynamoDB默认重试策略,用于使用自定义 最大错误重试次数
调整此延迟感知DynamoDB应用程序“需要了解平均延迟要求和记录特征(如项目数量及其平均大小)对于您的应用程序,不同应用程序模块或微服务之间的相互依赖关系以及部署平台。仔细的应用程序API设计、适当的超时值和重试策略可以使您的应用程序为不可避免的网络和服务器端问题做好准备”

引自: