Skip to content

Commit 5388782

Browse files
committed
feat: lru cache monitor/log (#386)
1 parent 16667cd commit 5388782

File tree

6 files changed

+20
-16
lines changed

6 files changed

+20
-16
lines changed

camellia-redis-proxy/camellia-redis-proxy-core/src/main/java/com/netease/nim/camellia/redis/proxy/upstream/kv/cache/CacheCapacityCalculator.java

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -3,29 +3,19 @@
33
import com.netease.nim.camellia.redis.proxy.conf.ProxyDynamicConf;
44
import com.netease.nim.camellia.redis.proxy.monitor.KvLRUCacheMonitor;
55
import com.netease.nim.camellia.redis.proxy.upstream.kv.conf.RedisKvConf;
6-
import com.netease.nim.camellia.redis.proxy.util.Utils;
76
import com.netease.nim.camellia.tools.sys.MemoryInfo;
87
import com.netease.nim.camellia.tools.sys.MemoryInfoCollector;
9-
import com.netease.nim.camellia.tools.utils.CamelliaMapUtils;
108
import io.netty.util.concurrent.DefaultThreadFactory;
11-
import org.slf4j.Logger;
12-
import org.slf4j.LoggerFactory;
139

14-
import java.util.concurrent.ConcurrentHashMap;
1510
import java.util.concurrent.Executors;
1611
import java.util.concurrent.ScheduledExecutorService;
1712
import java.util.concurrent.TimeUnit;
18-
import java.util.concurrent.atomic.AtomicLong;
1913

2014
/**
2115
* Created by caojiajun on 2025/2/17
2216
*/
2317
public class CacheCapacityCalculator {
2418

25-
private static final Logger logger = LoggerFactory.getLogger(CacheCapacityCalculator.class);
26-
27-
private static final ConcurrentHashMap<String, AtomicLong> loopMap = new ConcurrentHashMap<>();
28-
2919
private static final ScheduledExecutorService scheduleService = Executors.newSingleThreadScheduledExecutor(new DefaultThreadFactory("kv-lru-cache-capacity-schedule"));
3020

3121
public static void scheduleAtFixedRate(Runnable command, long initialDelay, long period, TimeUnit unit) {
@@ -45,12 +35,6 @@ public static void update(SlotLRUCache<?> cache, String namespace, String name)
4535
newCapacity = 10000;
4636
}
4737
cache.setCapacity(newCapacity);
48-
49-
long loop = Math.abs(CamelliaMapUtils.computeIfAbsent(loopMap, namespace + "|" + name, k -> new AtomicLong()).incrementAndGet());
50-
if (loop % 6 == 0) {
51-
logger.info("kv lru cache capacity update, namespace = {}, name = {}, targetSize = {}, currentSize = {}, currentCapacity = {}, currentKeyCount = {}, newCapacity = {}",
52-
namespace, name, Utils.humanReadableByteCountBin(targetSize), Utils.humanReadableByteCountBin(currentSize), currentCapacity, currentKeyCount, newCapacity);
53-
}
5438
}
5539

5640
private static long targetSize(String namespace, String name) {

camellia-redis-proxy/camellia-redis-proxy-core/src/main/java/com/netease/nim/camellia/redis/proxy/upstream/kv/cache/HashLRUCache.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import com.netease.nim.camellia.redis.proxy.cluster.ProxyClusterSlotMapUtils;
55
import com.netease.nim.camellia.redis.proxy.conf.ProxyDynamicConf;
66
import com.netease.nim.camellia.redis.proxy.enums.RedisCommand;
7+
import com.netease.nim.camellia.redis.proxy.monitor.KvLRUCacheMonitor;
78
import com.netease.nim.camellia.redis.proxy.upstream.kv.conf.RedisKvConf;
89
import com.netease.nim.camellia.redis.proxy.upstream.kv.meta.KeyType;
910
import com.netease.nim.camellia.tools.utils.BytesKey;
@@ -54,10 +55,13 @@ private void rebuild() {
5455
this.localCacheForWrite.setCapacity(capacity);
5556
logger.info("hash lru cache build, namespace = {}, capacity = {}", namespace, capacity);
5657
}
58+
KvLRUCacheMonitor.update(namespace, "kv.hash.lru.read.cache", localCache.getCapacity(), localCache.size(), localCache.estimateSize(), 0);
59+
KvLRUCacheMonitor.update(namespace, "kv.hash.lru.write.cache", localCacheForWrite.getCapacity(), localCacheForWrite.size(), localCacheForWrite.estimateSize(), 0);
5760
this.capacity = capacity;
5861
} else {
5962
CacheCapacityCalculator.update(localCache, namespace, "kv.hash.lru.read.cache");
6063
CacheCapacityCalculator.update(localCacheForWrite, namespace, "kv.hash.lru.write.cache");
64+
this.capacity = 0;
6165
}
6266
}
6367

camellia-redis-proxy/camellia-redis-proxy-core/src/main/java/com/netease/nim/camellia/redis/proxy/upstream/kv/cache/KeyMetaLRUCache.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import com.netease.nim.camellia.redis.proxy.cluster.ClusterModeStatus;
44
import com.netease.nim.camellia.redis.proxy.cluster.ProxyClusterSlotMapUtils;
55
import com.netease.nim.camellia.redis.proxy.conf.ProxyDynamicConf;
6+
import com.netease.nim.camellia.redis.proxy.monitor.KvLRUCacheMonitor;
67
import com.netease.nim.camellia.redis.proxy.upstream.kv.conf.RedisKvConf;
78
import com.netease.nim.camellia.redis.proxy.upstream.kv.meta.KeyMeta;
89
import org.slf4j.Logger;
@@ -48,10 +49,13 @@ private void rebuild() {
4849
this.nullCache.setCapacity(capacity);
4950
logger.info("key meta lru cache build, capacity = {}", capacity);
5051
}
52+
KvLRUCacheMonitor.update(namespace, "kv.key.meta.lru.cache", localCache.getCapacity(), localCache.size(), localCache.estimateSize(), 0);
53+
KvLRUCacheMonitor.update(namespace, "kv.key.meta.lru.null.cache", nullCache.getCapacity(), nullCache.size(), nullCache.estimateSize(), 0);
5154
this.capacity = capacity;
5255
} else {
5356
CacheCapacityCalculator.update(localCache, namespace, "kv.key.meta.lru.cache");
5457
CacheCapacityCalculator.update(nullCache, namespace, "kv.key.meta.lru.null.cache");
58+
this.capacity = 0;
5559
}
5660
}
5761

camellia-redis-proxy/camellia-redis-proxy-core/src/main/java/com/netease/nim/camellia/redis/proxy/upstream/kv/cache/SetLRUCache.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import com.netease.nim.camellia.redis.proxy.cluster.ProxyClusterSlotMapUtils;
55
import com.netease.nim.camellia.redis.proxy.conf.ProxyDynamicConf;
66
import com.netease.nim.camellia.redis.proxy.enums.RedisCommand;
7+
import com.netease.nim.camellia.redis.proxy.monitor.KvLRUCacheMonitor;
78
import com.netease.nim.camellia.redis.proxy.upstream.kv.conf.RedisKvConf;
89
import com.netease.nim.camellia.redis.proxy.upstream.kv.meta.KeyType;
910
import com.netease.nim.camellia.tools.utils.BytesKey;
@@ -54,10 +55,13 @@ private void rebuild() {
5455
this.localCacheForWrite.setCapacity(capacity);
5556
logger.info("set lru cache build, namespace = {}, capacity = {}", namespace, capacity);
5657
}
58+
KvLRUCacheMonitor.update(namespace, "kv.set.lru.read.cache", localCache.getCapacity(), localCache.size(), localCache.estimateSize(), 0);
59+
KvLRUCacheMonitor.update(namespace, "kv.set.lru.write.cache", localCacheForWrite.getCapacity(), localCacheForWrite.size(), localCacheForWrite.estimateSize(), 0);
5760
this.capacity = capacity;
5861
} else {
5962
CacheCapacityCalculator.update(localCache, namespace, "kv.set.lru.read.cache");
6063
CacheCapacityCalculator.update(localCacheForWrite, namespace, "kv.set.lru.write.cache");
64+
this.capacity = 0;
6165
}
6266
}
6367

camellia-redis-proxy/camellia-redis-proxy-core/src/main/java/com/netease/nim/camellia/redis/proxy/upstream/kv/cache/ZSetIndexLRUCache.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import com.netease.nim.camellia.redis.proxy.cluster.ClusterModeStatus;
44
import com.netease.nim.camellia.redis.proxy.cluster.ProxyClusterSlotMapUtils;
55
import com.netease.nim.camellia.redis.proxy.conf.ProxyDynamicConf;
6+
import com.netease.nim.camellia.redis.proxy.monitor.KvLRUCacheMonitor;
67
import com.netease.nim.camellia.redis.proxy.upstream.kv.conf.RedisKvConf;
78
import com.netease.nim.camellia.redis.proxy.upstream.kv.utils.BytesUtils;
89
import com.netease.nim.camellia.tools.utils.BytesKey;
@@ -49,10 +50,13 @@ private void rebuild() {
4950
this.localCacheForWrite.setCapacity(capacity);
5051
logger.info("zset index lru cache build, namespace = {}, capacity = {}", namespace, capacity);
5152
}
53+
KvLRUCacheMonitor.update(namespace, "kv.zset.index.lru.read.cache", localCache.getCapacity(), localCache.size(), localCache.estimateSize(), 0);
54+
KvLRUCacheMonitor.update(namespace, "kv.zset.index.lru.write.cache", localCacheForWrite.getCapacity(), localCacheForWrite.size(), localCacheForWrite.estimateSize(), 0);
5255
this.capacity = capacity;
5356
} else {
5457
CacheCapacityCalculator.update(localCache, namespace, "kv.zset.index.lru.read.cache");
5558
CacheCapacityCalculator.update(localCacheForWrite, namespace, "kv.zset.index.lru.write.cache");
59+
this.capacity = 0;
5660
}
5761
}
5862

camellia-redis-proxy/camellia-redis-proxy-core/src/main/java/com/netease/nim/camellia/redis/proxy/upstream/kv/cache/ZSetLRUCache.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import com.netease.nim.camellia.redis.proxy.cluster.ProxyClusterSlotMapUtils;
55
import com.netease.nim.camellia.redis.proxy.conf.ProxyDynamicConf;
66
import com.netease.nim.camellia.redis.proxy.enums.RedisCommand;
7+
import com.netease.nim.camellia.redis.proxy.monitor.KvLRUCacheMonitor;
78
import com.netease.nim.camellia.redis.proxy.upstream.kv.command.zset.utils.ZSetLex;
89
import com.netease.nim.camellia.redis.proxy.upstream.kv.command.zset.utils.ZSetScore;
910
import com.netease.nim.camellia.redis.proxy.upstream.kv.conf.RedisKvConf;
@@ -56,10 +57,13 @@ private void rebuild() {
5657
this.localCacheForWrite.setCapacity(capacity);
5758
logger.info("zset lru cache build, namespace = {}, capacity = {}", namespace, capacity);
5859
}
60+
KvLRUCacheMonitor.update(namespace, "kv.zset.lru.read.cache", localCache.getCapacity(), localCache.size(), localCache.estimateSize(), 0);
61+
KvLRUCacheMonitor.update(namespace, "kv.zset.lru.write.cache", localCacheForWrite.getCapacity(), localCacheForWrite.size(), localCacheForWrite.estimateSize(), 0);
5962
this.capacity = capacity;
6063
} else {
6164
CacheCapacityCalculator.update(localCache, namespace, "kv.zset.lru.read.cache");
6265
CacheCapacityCalculator.update(localCacheForWrite, namespace, "kv.zset.lru.write.cache");
66+
this.capacity = capacity;
6367
}
6468
}
6569

0 commit comments

Comments
 (0)