繁体   English   中英

雷迪森客户端; RedisTimeoutException 问题

[英]Redisson client ; RedisTimeoutException issue

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

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

我也很好奇是否应该在进行 get/set 调用后关闭Redis连接。 我试过找到这个,但没有发现关于如何关闭Redis连接的结论

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

编辑1:

我已经尝试通过在 3 次不同的迭代中更改以下值

迭代 1:

 idleConnectionTimeout: 30000
 connectTimeout: 30000
 timeout: 30000

迭代 2:

nettyThreads: 0

迭代 3:

connectionMinimumIdleSize: 100
connectionPoolSize: 750

我已经尝试过这些东西,但没有任何东西对我有用

任何帮助表示赞赏。

提前致谢

假设您在缓存 JVM 上收到低 memory 警报。

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

  1. 过多的并行缓存仍然存在。
  2. 大量数据被持久化。

两者都可以由服务器上的流量决定。

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

尝试设置nettyThreads = 64设置

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM