skip to Main Content

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

2

Answers


  1. 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.

    Login or Signup to reply.
  2. Try to set nettyThreads = 64 settings

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search