Возвращает ли Ignite Cache метрики для кэша в локальном режиме - PullRequest
0 голосов
/ 07 ноября 2018

Похоже, что 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 сообщают о размере после ввода как 1, тогда как, когда кеш находится в режиме LOCAL, они оба сообщают о размере как 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]

Что показывает, что метрики put & remove работают, но размер равен 0.

1 Ответ

0 голосов
/ 24 ноября 2018

Похоже, что теперь он не работает должным образом для локального кэша. Однако вместо этого вы можете использовать показатель offHeapEntriesCnt - он показывает правильный размер.

Я создал тикет для исправления: https://issues.apache.org/jira/browse/IGNITE-10398

...