首页 > 解决方案 > DAX 间歇性无可用端点

问题描述

设想:

我们有一个流式 Java 应用程序,它通过 DAX 使用最新的 DAX 客户端实例对 DynamoDB 执行读/写请求。在执行简单的集成测试和性能测试时,我们会间歇性地看到没有可用端点的异常。

com.amazonaws.AmazonClientException: Unable to call cluster endpoint: No endpoints available
at com.amazon.dax.client.dynamodbv2.ClusterDaxClient$ClusterReadRetryHandler.check(ClusterDaxClient.java:699)
at com.amazon.dax.client.dynamodbv2.ClusterDaxClient.invoke(ClusterDaxClient.java:649)
....    
IOException: No endpoints available
at com.amazon.dax.client.cluster.Cluster.readClient(Cluster.java:680)
at com.amazon.dax.client.dynamodbv2.ClusterDaxClient$2.getClient(ClusterDaxClient.java:138)
at com.amazon.dax.client.dynamodbv2.ClusterDaxClient.invoke(ClusterDaxClient.java:631)
... 23 more

澄清一下,间歇性意味着一些请求会成功,然后一些请求会失败,只有在单个测试(集成或性能)中再次让请求再次成功。事实上,这些测试运行中的大多数将在没有看到此错误的情况下成功,但它确实偶尔会发生,如最后一句中所述。

DAX 和 DynamoDB 的开发实例是常设实例,这意味着运行这些测试不会重新构建/部署 DAX 或 DynamoDB 实例以实现全新的状态(它们在测试运行之间保持启动并运行)。

问题:

在使用 DAX 的小规模测试(例如集成/e2e 测试)或更大规模的测试(例如性能测试)中,有没有其他人看到过这种间歇性行为的类似模式?我知道这已经在人们无法连接到 DAX 的场景的其他票证上进行了讨论,但是我没有看到任何问题或场景可以识别此类间歇性行为。

标签: javaamazon-dynamodbamazon-dynamodb-dax

解决方案


推荐阅读