2011-12-13 3 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 웹 서버에 설치하십시오. 웹 응용 프로그램에 액세스하십시오. 로그인 페이지가 시작됩니다. 클러스터 이름, 암호 및 server : 포트를 입력하고 연결을 클릭하면됩니다. 통계가있는 모든 맵을 표시합니다.

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을 호출하면 다른 포트 번호로 새 항목을 만들고이지도가 첨부됩니다. 이지도의 결과가 표시됩니다. 로컬 아파치에서 실행중인 hazelcast 모니터를 사용하여 명확하게 볼 수 있습니다. 어떻게하면 실제지도 항목을 볼 수있는 동일한 포트를 얻을 수 있습니까? – Yahiya

+1

Hazelcast.getMap (및 Hazelcast 클래스의 다른 정적 'get'메소드)은 Classloader/JVM에서 정적/기본 인스턴스에 액세스하는 데 사용됩니다. 이미 존재하지 않는다면 새로운 것이 게으르게 생성됩니다. HazelcastInstance의 로컬 통계에 액세스하려면 특정 인스턴스에서 getMap() 및 getLocalMapStats()를 호출해야합니다. 다른 HazelcastInstance를 사용하여 인스턴스의 통계에 직접 액세스 할 수 없습니다. 그러나 원격 태스크를 제출하거나 Hazelcast ManagementCenter를 사용하는 것과 같은 간접적 인 액세스 방법이 있습니다. – mmdogan