【问题标题】:Hazelcast Map Stats榛树地图统计
【发布时间】:2012-02-12 22:55:17
【问题描述】:

我正在尝试显示地图的统计信息。它总是显示没有命中为 0。我正在使用以下代码。

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}}

感谢任何帮助。我想知道点击数、地图大小和条目数。

【问题讨论】:

  • 任何帮助....?对我来说很紧急...

标签: java hazelcast


【解决方案1】:

确保将一些条目放入地图。从统计数据中可以看出,您在地图中只有一个条目,并且该条目由另一个节点拥有,当前节点具有该条目的备份(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());

hits 和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}}

试试这个,看看你是否会得到相同的结果。否则要么你的地图是空的,要么你使用的版本有错误。

【讨论】:

  • 我试过它仍然显示错误的结果。我正在使用 1.9.3.4。我观察到的一件事是,当我在我的独立程序中调用 Hazelcast.getMap 时,它会创建一个带有其他端口号的新条目,并且此映射会附加到它上面。并且显示了这张地图的结果。我可以使用在本地 apache 中运行的 hazelcast 监视器清楚地看到它。我如何获得与实际地图条目相同的端口。
  • Hazelcast.getMap(以及 Hazelcast 类的其他静态“get”方法)用于访问 Classloader/JVM 上的静态/默认实例。如果还没有,则懒惰地创建一个新的。要访问 HazelcastInstance 的本地统计信息,您应该在该特定实例上调用 getMap() 和 getLocalMapStats()。您不能使用另一个 HazelcastInstance 直接访问实例的统计信息。但也有间接的访问方式,例如提交远程任务或使用 Hazelcast ManagementCenter。
【解决方案2】:

下载 hazelcast-monitor9.3.4.jar 并在其中安装您的本地 apache 网络服务器。访问 Web 应用程序。它将启动一个登录页面。只需提供集群名称、密码和服务器:端口,然后单击连接。它将显示所有带有统计信息的地图。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多