Investigate whether certain cached key-values can be local to one FE node, or MUST be shared with other FE nodes
Background:
The gitlab-ce code has approximately 20 key prefixes used for caching of values in Rails.cache and Redis. At present moment, all of those K/V pairs are stored in a separate host node when gitlab is clustered. Performance will be enhanced by avoiding unnecessary network round trips to the separate redis nodes.
What questions are you trying to answer?
This is a potential performance enhancement area. If certain key prefixes can remain local to one front end node, we avoid network roundtrips to redis or other caching service.
Are you looking to verify an existing hypothesis or uncover new issues you should be exploring?
This is verifying an existing hypothesis. It is not yet known if some of the keys stored in Rails.cache or Redis have a functional lifecycle less than or equal to one HTTP transaction.
What is the backstory of this project and how does it impact the approach?
Potential performance enhancements were observed in the code inspection for #30392 (closed), with MR !11573 (merged).
What do you already know about the areas you are exploring?
there are about 20 key prefix strings that need to be checked for usage patterns between front end nodes and intended persistence/lifecylce.
What does success look like at the end of the project?
Keys that can remain local to a particular front end node will not be written to a network instance of Redis, saving network round-trips and enhancing the performance of the gitlab-ce cluster.
Links / references:
~per