Amazon DynamoDB Asyn c клиентские http-метрики - PullRequest
1 голос
/ 28 марта 2020

Я использую Amazon SDK (Java) DynamoDB Asyn c клиент 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

Я ожидаю, что это связано с моими настройками, но мне нужны агрессивные таймауты. Я все равно сталкивался с теми же проблемами со значениями по умолчанию (это заняло больше времени). Я хотел бы знать, почему я попал в эту ситуацию. Мне кажется, что это связано с исчерпанием пула соединений или другими проблемами с пулом.

Могу ли я включить какие-либо показатели для мониторинга этого?

1 Ответ

0 голосов
/ 11 апреля 2020

Похоже, что ваше приложение является "клиентским приложением DynamoDB с учетом времени ожидания". Базовое поведение клиента HTTP должно быть настроено для его стратегии повторения. К счастью, AWS Java SDK обеспечивает полный контроль над поведением клиента HTTP и стратегиями повтора, эта документация помогает объяснить, как настроить параметры и параметры HTTP-запроса AWS Java SDK для базового клиента HTTP:

https://aws.amazon.com/blogs/database/tuning-aws-java-sdk-http-request-settings-for-latency-aware-amazon-dynamodb-applications/

В документе приведен пример настройки пяти параметров конфигурации клиента HTTP, заданных при создании объекта ClientConfiguration, и подробно обсуждается каждый из них. параметров:

  • ConnectionTimeout
  • ClientExecutionTimeout
  • RequestTimeout
  • SocketTimeout
  • Политика повторных попыток DynamoDB по умолчанию для вызовов HTTP API с настраиваемым максимальным числом повторов ошибок

Настройка этого приложения DynamoDB с учетом времени ожидания "требует понимания требований к средней задержке и характеристик записи (таких как количество элементов и их средний размер) для вашего приложения , взаимозависимости между разными аренда модулей приложений или микросервисов, а также платформа для развертывания. Тщательный дизайн API приложения, правильные значения времени ожидания и стратегия повторных попыток могут подготовить ваше приложение к неизбежным сетевым и серверным проблемам "

Цитируется из: https://aws.amazon.com/blogs/database/tuning-aws-java-sdk-http-request-settings-for-latency-aware-amazon-dynamodb-applications/

...