标题翻译
Elatsic cache - redis - Not able to connect after writing ~30-40 K keys- connection pool issue
问题
我正在使用具有4个分片和每个分片2个副本节点的Elastic Cache Redis,总共有12个节点。
我正在使用带有lettuce的Spring Data Redis。
以下是我用于集群连接的配置 -
public LettuceConnectionFactory redisConnectionFactory() {
List<String> nodes = new ArrayList<>();
nodes.add("shard1***");
nodes.add("shard2***");
nodes.add("shard3***");
nodes.add("shard4***");
RedisClusterConfiguration clusterConfiguration = new RedisClusterConfiguration(nodes);
return new LettuceConnectionFactory(clusterConfiguration);
}
我正在使用管道写入数据,该管道在一个管道中执行5个写入命令。对于这个操作,吞吐量非常高,约为每秒300K,因此我遇到了以下错误。是否有任何方法可以优化lettuce连接池以解决此问题。任何指示都将很有帮助。
at io.lettuce.core.LettuceFutures.awaitAll(LettuceFutures.java:88)
Caused by: io.lettuce.core.RedisException: io.lettuce.core.RedisConnectionException: 无法连接到172.26.25.141:6379
at org.springframework.data.redis.connection.lettuce.LettuceConnection.closePipeline(LettuceConnection.java:542)
... 35 more
Caused by: io.lettuce.core.RedisConnectionException: 无法连接到172.26.25.141:6379
Caused by: io.lettuce.core.RedisConnectionException: 无法连接到172.26.25.141:6379
at io.lettuce.core.RedisConnectionException.create(RedisConnectionException.java:78)
at io.lettuce.core.RedisConnectionException.create(RedisConnectionException.java:56)
at io.lettuce.core.cluster.PooledClusterConnectionProvider.lambda$getConnectionAsync$6(PooledClusterConnectionProvider.java:384)
at java.base/java.util.concurrent.CompletableFuture.uniHandle(CompletableFuture.java:930)
at java.base/java.util.concurrent.CompletableFuture$UniHandle.tryFire(CompletableFuture.java:907)
at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:506)
at java.base/java.util.concurrent.CompletableFuture.completeExceptionally(CompletableFuture.java:2088)
at io.lettuce.core.AbstractRedisClient.lambda$initializeChannelAsync0$4(AbstractRedisClient.java:329)
at io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:577)
at io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:551)
英文翻译
I am using Elastic cache redis with 4 shards and 2 replica nodes for each shard, in total 12 nodes.
I am using spring data redis with lettuce.
Below is my configuration for cluster connection -
public LettuceConnectionFactory redisConnectionFactory() {
List<String> nodes = new ArrayList<>();
nodes.add("shard1***");
nodes.add("shard2***");
nodes.add("shard3***");
nodes.add("shard4***");
RedisClusterConfiguration clusterConfiguration = new RedisClusterConfiguration(nodes);
return new LettuceConnectionFactory(clusterConfiguration);
}
I am writing data in a pipeline, which execute 5 write commands in a pipeline. Throughput is very high for this ~300K/per sec and due to this I am getting below error. Is there any way I can optimize lettuce pool to resolve this issue. Any pointer will be helpful.
at io.lettuce.core.LettuceFutures.awaitAll(LettuceFutures.java:88)
Caused by: io.lettuce.core.RedisException: io.lettuce.core.RedisConnectionException: Unable to connect to 172.26.25.141:6379
at org.springframework.data.redis.connection.lettuce.LettuceConnection.closePipeline(LettuceConnection.java:542)
... 35 more
Caused by: io.lettuce.core.RedisConnectionException: Unable to connect to 172.26.25.141:6379
Caused by: io.lettuce.core.RedisConnectionException: Unable to connect to 172.26.25.141:6379
at io.lettuce.core.RedisConnectionException.create(RedisConnectionException.java:78)
at io.lettuce.core.RedisConnectionException.create(RedisConnectionException.java:56)
at io.lettuce.core.cluster.PooledClusterConnectionProvider.lambda$getConnectionAsync$6(PooledClusterConnectionProvider.java:384)
at java.base/java.util.concurrent.CompletableFuture.uniHandle(CompletableFuture.java:930)
at java.base/java.util.concurrent.CompletableFuture$UniHandle.tryFire(CompletableFuture.java:907)
at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:506)
at java.base/java.util.concurrent.CompletableFuture.completeExceptionally(CompletableFuture.java:2088)
at io.lettuce.core.AbstractRedisClient.lambda$initializeChannelAsync0$4(AbstractRedisClient.java:329)
at io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:577)
at io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:551)
专注分享java语言的经验与见解,让所有开发者获益!
评论