我正在通过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
我试过这些方法,但都不管用
如有任何帮助,我们不胜感激。
提前谢谢你
2条答案
按热度按时间iyfjxgzm1#
假设您在缓存JVM上收到内存不足的警报。
您可能需要分析流量并确定两件事
1.存在太多的并行缓存。
1.大量数据被持久化。
两者都可以由您服务器上的流量来确定。
对于选项1,配置池大小可以解决您的问题,但是对于选项2,您可能必须重构代码以将数据保存在较小的块中。
epfja78i2#
尝试设置
nettyThreads = 64
设置