简体   繁体   中英

Redisson client ; RedisTimeoutException issue

I am using Google cloud managed redis cluster(v5) via redisson(3.12.5)

Following are my SingleServer configurations in yaml file

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> {}

I am getting following exceptions when I increase the load on my application

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 

It seems there is no issue on redis cluster and i think i need to make tweaking in my client side redis connection pooling confs(mentioned above) to make it work.

Please suggest me the changes i need to make in my confs

I am also curious if I should close the Redis connection after making get/set calls. I have tried finding this but found nothing conclusive on how to close Redis connections

One last thing that I want to ask is that is there any mechanism to get Redis connection pool stats(active connection, idle connection etc ) in Redisson

Edit1:

I have tried by changing values following values in 3 different iterations

Iteration 1:

 idleConnectionTimeout: 30000
 connectTimeout: 30000
 timeout: 30000

Iteration 2:

nettyThreads: 0

Iteration 3:

connectionMinimumIdleSize: 100
connectionPoolSize: 750

I have tried these things but nothing has worked for me

Any help is appreciated.

Thanks in advance

Assuming you are getting low memory alerts on your cache JVM.

You may have to analyze the traffic and determine 2 things

  1. Too many parallel cache persists.
  2. Huge chunk of data being persisted.

Both can be determined by the traffic on your server.

For option 1 configuring pool-size would solve you issue, but for option 2 you may have to refactor your code to persist data in smaller chunks.

Try to set nettyThreads = 64 settings

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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