ignite - Ignite Cache 是否返回本地模式下缓存的指标
问题描述
似乎 Ignite 不返回本地模式下缓存的指标。
我在 Ignite 2.6 中用来测试的代码是:
IgniteConfiguration igniteConfig = new IgniteConfiguration();
CacheConfiguration cacheConfig = new CacheConfiguration("testCache");
cacheConfig.setStatisticsEnabled(true);
igniteConfig.setCacheConfiguration(cacheConfig);
for (CacheMode cacheMode : CacheMode.values()) {
cacheConfig.setCacheMode(cacheMode);
try (Ignite ignite = Ignition.start(igniteConfig)) {
IgniteCache cache = ignite.<String, String>getOrCreateCache(cacheConfig.getName());
System.out.println(cacheMode + " local metrics size before:" + cache.localMetrics().getSize());
System.out.println(cacheMode + " metrics size before:" + cache.metrics().getSize());
//adding a sleep just in case it's needed
Thread.sleep(5000);
cache.put("key", "val");
System.out.println(cacheMode + " local metrics size after:" + cache.localMetrics().getSize());
System.out.println(cacheMode + " metrics size after:" + cache.metrics().getSize());
}
}
输出显示,对于 REPLICATED 和 PARTITIONED 缓存IgniteCache.metrics
,IgniteCache.localMetrics
在 put 之后都报告大小为 1,而当缓存处于 LOCAL 缓存模式时,即使在 put 之后它们都报告大小为 0。
编辑:一些进一步的调试表明并非所有指标都丢失了。例如使用:
IgniteConfiguration igniteConfig = new IgniteConfiguration();
CacheConfiguration cacheConfig = new CacheConfiguration("testCache");
cacheConfig.setStatisticsEnabled(true);
igniteConfig.setCacheConfiguration(cacheConfig);
cacheConfig.setCacheMode(CacheMode.LOCAL);
try (Ignite ignite = Ignition.start(igniteConfig)) {
IgniteCache cache = ignite.<String, String>getOrCreateCache(cacheConfig.getName());
cache.put("key", "val");
cache.put("key2", "val2");
cache.remove("key2");
System.out.println(cache.localMetrics());
}
我得到:
CacheMetricsSnapshot [reads=0, puts=2, hits=0, misses=0, txCommits=0, txRollbacks=0, evicts=0, removes=1, putAvgTimeNanos=8054.916, getAvgTimeNanos=0.0, rmvAvgTimeNanos=3732.072, commitAvgTimeNanos=0.0, rollbackAvgTimeNanos=0.0, cacheName=testCache, offHeapGets=0, offHeapPuts=0, offHeapRemoves=0, offHeapEvicts=0, offHeapHits=0, offHeapMisses=0, offHeapEntriesCnt=1, heapEntriesCnt=0, offHeapPrimaryEntriesCnt=1, offHeapBackupEntriesCnt=1, offHeapAllocatedSize=0, size=0, keySize=0, isEmpty=false, dhtEvictQueueCurrSize=-1, txThreadMapSize=0, txXidMapSize=0, txCommitQueueSize=0, txPrepareQueueSize=0, txStartVerCountsSize=0, txCommittedVersionsSize=0, txRolledbackVersionsSize=0, txDhtThreadMapSize=0, txDhtXidMapSize=-1, txDhtCommitQueueSize=0, txDhtPrepareQueueSize=0, txDhtStartVerCountsSize=0, txDhtCommittedVersionsSize=-1, txDhtRolledbackVersionsSize=-1, isWriteBehindEnabled=false, writeBehindFlushSize=-1, writeBehindFlushThreadCnt=-1, writeBehindFlushFreq=-1, writeBehindStoreBatchSize=-1, writeBehindTotalCriticalOverflowCnt=-1, writeBehindCriticalOverflowCnt=-1, writeBehindErrorRetryCnt=-1, writeBehindBufSize=-1, totalPartitionsCnt=0, rebalancingPartitionsCnt=0, keysToRebalanceLeft=0, rebalancingKeysRate=0, rebalancingBytesRate=0, rebalanceStartTime=-1, rebalanceFinishTime=-1, rebalanceClearingPartitionsLeft=0, keyType=java.lang.Object, valType=java.lang.Object, isStoreByVal=true, isStatisticsEnabled=true, isManagementEnabled=false, isReadThrough=false, isWriteThrough=false, isValidForReading=true, isValidForWriting=true]
这表明,放置和删除指标似乎有效,但大小为 0。
解决方案
看起来它现在不适用于本地缓存。但是,您可以改用 offHeapEntriesCnt 指标 - 它显示正确的大小。
我创建了一张票来解决这个问题:https ://issues.apache.org/jira/browse/IGNITE-10398
推荐阅读
- javascript - Onclick 函数在加载事件侦听器中时未调用
- sharepoint - 如何开始从 SharePoint 外部读取 SharePoint 列表信息?
- python - 将两个单独的数据框之间的对应列组合成新的数据框
- ios - 视图转换后如何修复不均匀的边框宽度?
- angularjs - 如何为自定义 B2C 邀请策略注册 MSAL JS 回调?
- flutter - WidgetsApp 类、MaterialApp 类和 Directionality 类有什么区别
- python - 当复杂索引和基于布尔的条件作为子集时,如何为熊猫数据框赋值?
- yii - Yii 2 高级模板默认后台管理员登录详情
- javascript - 如果在使用 javascript 中的 map 方法通过该数组执行循环期间将元素推入数组会发生什么
- javascript - 如何按 id 更新索引对象数组