Redisson客户端;RedisTimeoutException问题

gudnpqoy  于 2022-09-21  发布在  Redis
关注(0)|答案(2)|浏览(3381)

我正在通过redisson(3.12.5)使用Google cloud managed redis cluster(v5)

以下是我在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连接池配置中进行调整(如上所述)才能使其正常工作。

请建议我在我的配置文件中需要做哪些更改

我还想知道在进行GET/SET调用后是否应该关闭Redis连接。我试着找到这个,但没有找到关于如何关闭Redis连接的确凿证据

我想问的最后一件事是,是否有任何机制可以在Redisson中获取Redis连接池的统计信息(活动连接、空闲连接等

Edit1:

我尝试过在3次不同的迭代中更改值

迭代1:

idleConnectionTimeout: 30000
 connectTimeout: 30000
 timeout: 30000

迭代2:

nettyThreads: 0

迭代3:

connectionMinimumIdleSize: 100
connectionPoolSize: 750

我试过这些方法,但都不管用

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

提前谢谢你

iyfjxgzm

iyfjxgzm1#

假设您在缓存JVM上收到内存不足的警报。

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

1.存在太多的并行缓存。
1.大量数据被持久化。

两者都可以由您服务器上的流量来确定。

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

epfja78i

epfja78i2#

尝试设置nettyThreads = 64设置

相关问题