Redisson客户端; RedisTimeoutException问题

问题描述 投票:0回答:2

我正在通过

Google cloud managed redis cluster(v5)
 使用 
redisson(3.12.5)

以下是我在yaml文件中的

SingleServer
配置

singleServerConfig:
    idleConnectionTimeout: 10000
    connectTimeout: 10000
    timeout: 3000
    retryAttempts: 3
    retryInterval: 1500
    password: null
    subscriptionsPerConnection: 5
    clientName: null
    address: "redis://127.0.0.1:6379"
    subscriptionConnectionMinimumIdleSize: 1
    subscriptionConnectionPoolSize: 50
    connectionMinimumIdleSize: 40
    connectionPoolSize: 250
    database: 0
    dnsMonitoringInterval: 5000
threads: 0
nettyThreads: 0
codec: !<org.redisson.codec.JsonJacksonCodec> {}

当我增加应用程序的负载时,出现以下异常

org.redisson.client.RedisTimeoutException: Unable to acquire connection! Increase connection pool size and/or retryInterval settings Node source: NodeSource 

org.redisson.client.RedisTimeoutException: Command still hasn't been written into connection! Increase nettyThreads and/or retryInterval settings. Payload size in bytes: 34. Node source: NodeSource 

看来redis集群没有问题,我想我需要在客户端redis连接池confs(上面提到的)中进行调整才能使其工作。

请建议我需要在我的配置中进行更改

我也很好奇在进行 get/set 调用后是否应该关闭

Redis
连接。我尝试找到这个,但没有发现关于如何关闭
Redis
连接

的结论

我想问的最后一件事是,是否有任何机制可以获取

Redis
 中的连接池统计信息(活动连接、空闲连接等)

编辑1:

我尝试过在 3 个不同的迭代中更改以下值的值

迭代 1:

Redisson

迭代 2:

idleConnectionTimeout: 30000 connectTimeout: 30000 timeout: 30000

迭代 3:

nettyThreads: 0

我已经尝试过这些方法,但没有任何效果对我有用

如有任何帮助,我们将不胜感激。

提前致谢

java google-cloud-platform redis redisson
2个回答
0
投票

您可能需要分析流量并确定两件事

仍然有太多并行缓存。
  1. 大量数据被持久化。
  2. 两者都可以根据您服务器上的流量来确定。

对于选项 1,配置池大小可以解决您的问题,但对于选项 2,您可能必须重构代码以将数据保存在较小的块中。


0
投票
connectionMinimumIdleSize: 100 connectionPoolSize: 750

设置

    

© www.soinside.com 2019 - 2024. All rights reserved.