lettuce icon indicating copy to clipboard operation
lettuce copied to clipboard

How small do Redis clusters need to be to enable dynamic refresh sources

Open nathanielhsu opened this issue 2 years ago • 3 comments

From the documentation, I see that I should set dynamic refresh sources to false when using Redis Cluster with many nodes in order to improve performance. From testing I also find that my clusters are too large to enable dynamic refresh sources.

Are there any numbers or guidance for how small clusters need to be in order to enable dynamic refresh sources? For context I want to enable dynamic refresh sources in order to filter nodes with replOffset == -1 in order to deal with LOADING scenario during failovers or Redis service updates which causes coverage drop for my service. Trying to instead split up my large clusters into multiple smaller clusters so wanted to get some guidance here if there is any for how small clusters need to be here to enable dynamic refresh sources here. Thanks!

nathanielhsu avatar Jan 08 '24 21:01 nathanielhsu

Basically, periodic and adaptive refresh strategies are an approximation what typically works although triggers are different. Both do not solve the problem that Redis Cluster doesn't emit notifications upon cluster reconfiguration.

For LOADING, you can either query the full cluster or wait and retry.

Do you have a stack trace handy that shows a LOADING failure?

mp911de avatar Jan 09 '24 09:01 mp911de

Enabling dynamic refresh sources would allow us to query the full cluster, so I was wondering if there is any guidance on how small clusters need to be to enable that since my clusters are too large and there's performance impact when I enable that flag. I'm looking to split up my cluster into smaller ones in order to enable dynamic refresh sources here.

nathanielhsu avatar Jan 09 '24 15:01 nathanielhsu

Hi, any updates here?

nathanielhsu avatar Jan 17 '24 22:01 nathanielhsu

Enabling dynamic refresh sources would allow us to query the full cluster, so I was wondering if there is any guidance on how small clusters need to be to enable that since my clusters are too large and there's performance impact when I enable that flag. I'm looking to split up my cluster into smaller ones in order to enable dynamic refresh sources here.

I am afraid it would be hard to give out a good recommendation as it would have to vary depending on:

  • network and cluster topology
  • network traffic and app traffic
  • specific SLA for the service being developed
  • server implementation and version
  • etc.

With so many variables it is hard to suggest meaningful defaults.

In most cases the system designers would come up with a list of configurations that make sense according to the design of the system and then would do experiments with the different configurations (ensuring some typical load on the system is already simulated) and verify the results.

Does that make sense, or did you mean something else?

tishun avatar Nov 04 '24 09:11 tishun

If you would like us to look at this issue, please provide the requested information. If the information is not provided within the next 30 days this issue will be closed.

github-actions[bot] avatar Feb 18 '25 00:02 github-actions[bot]