Cache Flipper persisted names directly to local memory storage
Now that application settings are no longer dominating network traffic, we see that the Feature#persisted_names is using a significant amount of CPU and network bandwidth for Redis. Move this cache into the thread-local memory storage to reduce Redis overhead.
This commit is contained in:
parent
e07ebe66af
commit
385aa46046
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
title: Cache Flipper persisted names directly to local memory storage
|
||||
merge_request: 30265
|
||||
author:
|
||||
type: performance
|
|
@ -34,7 +34,9 @@ class Feature
|
|||
begin
|
||||
# We saw on GitLab.com, this database request was called 2300
|
||||
# times/s. Let's cache it for a minute to avoid that load.
|
||||
Rails.cache.fetch('flipper:persisted_names', expires_in: 1.minute) { FlipperFeature.feature_names }
|
||||
Gitlab::ThreadMemoryCache.cache_backend.fetch('flipper:persisted_names', expires_in: 1.minute) do
|
||||
FlipperFeature.feature_names
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -40,7 +40,7 @@ describe Feature do
|
|||
.once
|
||||
.and_call_original
|
||||
|
||||
expect(Rails.cache)
|
||||
expect(Gitlab::ThreadMemoryCache.cache_backend)
|
||||
.to receive(:fetch)
|
||||
.once
|
||||
.with('flipper:persisted_names', expires_in: 1.minute)
|
||||
|
|
Loading…
Reference in New Issue