2011-12-13 58 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 web服务器。访问Web应用程序。它将启动一个登录页面。只需提供群集名称,密码和服务器:端口,然后单击连接。它将显示所有统计的地图。

2

确保你在地图中放入了一些条目。从统计数据可以看出,在映射中只有一个条目,并且该条目由另一个节点拥有,则当前节点具有该条目的备份(ownedEntryCount = 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时,它将创建一个带有其他端口号的新条目,并将该映射附加到它。并显示此地图的结果。我可以使用在本地apache中运行的hazelcast监视器清楚地看到它。我如何获得相同的端口,我可以看到实际的地图条目。 – Yahiya

+1

Hazelcast.getMap(以及Hazelcast类的其他静态“get”方法)用于访问Classloader/JVM上的静态/默认实例。如果还没有,那么懒惰地创建一个新的。要访问HazelcastInstance的本地统计信息,您应该在该特定实例上调用getMap()和getLocalMapStats()。您无法直接使用其他HazelcastInstance访问实例的统计信息。但也有间接的访问方式,例如提交远程任务或使用Hazelcast ManagementCenter。 – mmdogan