簡體   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