2011-12-13 5 views
3

マップの統計を表示しようとしています。ヒットの数は常に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}} 

です。ヒット数、地図のサイズ、エントリー数を知りたい

+0

任意のヘルプ....?その緊急の私のため... – Yahiya

答えて

1

hazelcast-monitor9.3.4.jarをダウンロードして、あなたのローカルApache Webサーバーをインストールしてください。 Webアプリケーションにアクセスします。ログインページが表示されます。クラスタ名、パスワード、およびサーバー:ポートを入力し、[接続]をクリックします。すべてのマップを統計情報とともに表示します。

2

マップにいくつかのエントリを入れてください。統計から見られるように、マップにはエントリが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()); 

どちらもヒットと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で動作するヘイルキャストモニターを使って、それをはっきりと見ることができます。どのように私は実際のマップのエントリを参照して同じポートを取得します。 – Yahiya

+1

Hazelcast.getMap(およびHazelcastクラスのその他の静的なgetメソッド)は、Classloader/JVMの静的/デフォルトインスタンスにアクセスするために使用されます。まだ存在しない場合は、新しいものが遅れて作成されます。 HazelcastInstanceのローカル統計にアクセスするには、その特定のインスタンスでgetMap()およびgetLocalMapStats()を呼び出す必要があります。別のHazelcastInstanceを使用してインスタンスの統計に直接アクセスすることはできません。しかし、リモートタスクの送信やHazelcast ManagementCenterの使用など、間接的なアクセス方法があります。 – mmdogan