2011-12-13 1 views
3

J'essaie d'afficher la statistique d'une carte. Il montre toujours aucun des hits comme 0. J'utilise le code suivant.Statistiques de la carte de Hazelcast

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

et la sortie est

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

Toute aide est appréciée. Je veux connaître le nombre de hits, la taille de la carte et le nombre d'entrées.

+0

toute aide ....? C'est urgent pour moi ... – Yahiya

Répondre

1

Téléchargez hazelcast-monitor9.3.4.jar et installez-y votre serveur web apache local. Accédez à l'application Web. Il va lancer une page de connexion. Indiquez simplement le nom du cluster, le mot de passe et le serveur: port et cliquez sur connecter. Il affichera toutes les cartes avec des statistiques.

2

Assurez-vous de mettre certaines entrées dans la carte. Comme le montrent les statistiques, vous n'avez qu'une seule entrée dans la carte et cette entrée appartient à un autre nœud, le nœud actuel a une sauvegarde de cette entrée (ownedEntryCount = 0, backupEntryCount = 1).

Notez que ces statistiques sont uniquement pour la carte locale des nœuds actuels. Si vous avez plus d'un nœud et que le nœud actuel ne possède aucune donnée au moment où vous obtenez les statistiques, vous obtiendrez 0 pour aucun nombre de hits ou nombre d'entrées possédées.

En utilisant Hazelcast 1.9.4.4 (plus tard à partir de maintenant) et un seul noeud, je peux obtenir les statistiques par;

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()); 

deux coups sûrs et ownedEntryCount montrent 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}} 

Essayez et voir si vous obtiendrez les mêmes résultats. Sinon, votre carte est vide ou il y a un bug dans la version que vous avez utilisée.

+0

Je l'ai essayé, il montre encore des résultats erronés. J'utilise 1.9.3.4. Une chose que j'ai observé est quand j'appelle Hazelcast.getMap dans mon programme autonome il créera une nouvelle entrée avec un autre numéro de port et cette carte est attachée à elle. Et les résultats de cette carte sont affichés. Je peux le voir clairement en utilisant le moniteur de noisette fonctionnant en apache local. Comment puis-je obtenir le même port où je vois les entrées de la carte réelle. – Yahiya

+1

Hazelcast.getMap (et aussi d'autres méthodes statiques 'get' de la classe Hazelcast) est utilisé pour accéder à une instance statique/par défaut sur Classloader/JVM. S'il n'y en a pas déjà, un nouveau est créé paresseusement. Pour accéder aux statistiques locales d'une HazelcastInstance, vous devez appeler getMap() et getLocalMapStats() sur cette instance spécifique. Vous ne pouvez pas accéder directement aux statistiques d'une instance à l'aide d'une autre HazelcastInstance. Mais il existe des moyens indirects d'accès, comme la soumission de tâche à distance ou l'utilisation de Hazelcast ManagementCenter. – mmdogan

Questions connexes