2011-12-13 9 views
3

Я пытаюсь отобразить статистику карты. Он всегда показывает отсутствие хитов как 0. Я использую следующий код.Hazelcast Информация о карте

IMap<String, byte[]> map = Hazelcast.getMap("SOMEMAP"); 
LocalMapStatsImpl local = (LocalMapStatsImpl) map.getLocalMapStats(); 
System.out.println(map.getLocalMapStats()); 

и выход

LocalMapStatsImpl{ownedEntryCount=0, backupEntryCount=1, markedAsRemovedEntryCount=0, ownedEntryMemoryCost=0, backupEntryMemoryCost=13841, markedAsRemovedMemoryCost=0, creationTime=1323806943770, lastAccessTime=0, lastUpdateTime=0, lastEvictionTime=0, hits=0, lockedEntryCount=0, lockWaitCount=0, dirtyEntryCount=0, LocalMapOperationStats{total= 0, puts:OperationStat{count=0, averageLatency=0}, gets:OperationStat{count=0, verageLatency=0}, emoves:OperationStat{count=0, averageLatency=0}, others: 0, received events: 0}} 

Любая помощь приветствуется. Я хочу знать отсутствие хитов, размер карты и количество записей.

+0

любая помощь ....? Его срочно для меня ... – Yahiya

ответ

1

Загрузите файл hazelcast-monitor9.3.4.jar и установите в нем ваш локальный веб-сервер apache. Доступ к веб-приложению. Он запустит страницу входа. Просто укажите имя кластера, пароль и сервер: порт и нажмите «Подключиться». Он отобразит все карты со статистикой.

2

Убедитесь, что вы ввели некоторые данные на карту. Как видно из статистики, у вас есть только одна запись на карте и эта запись принадлежит другому узлу, текущий узел имеет резервную копию этой записи (ownEntryCount = 0, backupEntryCount = 1).

Обратите внимание, что эта статистика предназначена только для локальной карты текущих узлов. Если у вас более одного узла, и текущий узел не владеет данными в то время, когда вы получаете статистику, тогда вы получите 0 из-за отсутствия или количества входящих записей.

Использование Hazelcast 1.9.4.4 (последний на данный момент) и единственный узел, я могу получить статистику;

IMap map = Hazelcast.getMap("test"); 
for (int i = 0; i < 100; i++) { 
    map.put(i, i); 
    map.get(i); 
} 
LocalMapStats stats = map.getLocalMapStats(); 
System.err.println(stats.getHits()); 
System.err.println(stats.getOwnedEntryCount()); 

Оба хитов и ownedEntryCount показать 100.

LocalMapStatsImpl{ownedEntryCount=100, backupEntryCount=0, markedAsRemovedEntryCount=0, ownedEntryMemoryCost=42100, backupEntryMemoryCost=0, markedAsRemovedMemoryCost=0, creationTime=1323844949878, lastAccessTime=1323844949908, lastUpdateTime=0, lastEvictionTime=0, hits=100, lockedEntryCount=0, lockWaitCount=0, dirtyEntryCount=0, LocalMapOperationStats{total= 200, puts:OperationStat{count=100, averageLatency=0}, gets:OperationStat{count=100, averageLatency=0}, removes:OperationStat{count=0, averageLatency=0}, others: 0, received events: 0}} 

Попробуйте это и посмотреть, если вы получите те же результаты. В противном случае ваша карта пуста или есть ошибка в используемой вами версии.

+0

Я попробовал, он по-прежнему показывает неправильные результаты. Я использую 1.9.3.4. Одна вещь, которую я наблюдал, - это когда я вызываю Hazelcast.getMap в своей автономной программе, она создаст новую запись с другим номером порта, и эта карта будет привязана к ней. И показаны результаты этой карты. Я вижу это ясно, используя монитор hazelcast, работающий в локальной Apache. Как получить тот же порт, где я вижу фактические записи в карте. – Yahiya

+1

Hazelcast.getMap (а также другие статические методы get get класса Hazelcast) используется для доступа к экземпляру static/default для Classloader/JVM. Если его уже нет, то создается новая лента. Чтобы получить доступ к локальной статистике HazelcastInstance, вы должны вызвать getMap() и getLocalMapStats() для этого конкретного экземпляра. Вы не можете получить доступ к статистике экземпляра напрямую, используя другой HazelcastInstance. Но есть косвенные способы доступа, такие как отправка удаленной задачи или использование Hazelcast ManagementCenter. – mmdogan