我有一个由 2 台服务器和 2 台胖客户端组成的集群。每个胖客户端在复制模式下有 2 个缓存。 我必须创建一个 API 来显示服务器的指标(堆分配、堆使用、持久性分配和使用等...)该 API 是连接到集群的另一个胖客户端。
igniteClient.cluster().state(ClusterState.ACTIVE);
IgniteCluster cluster = igniteClient.cluster();
ClusterGroup remoteGroup = cluster.forRemotes();
ClusterMetrics metrics = remoteGroup.metrics();
System.out.println("Total CPUs: " + metrics.getTotalCpus());
System.out.println("Total Heap Memory: " + metrics.getHeapMemoryTotal());
System.out.println("Heap Memory Initialized: " + metrics.getHeapMemoryInitialized());
System.out.println("Heap Memory Used: " + metrics.getHeapMemoryUsed());
System.out.println("Total Nodes in Cluster: " + metrics.getTotalNodes());
// Iterate through all caches and gather details
igniteClient.cacheNames().forEach(cacheName -> {
IgniteCache<?, ?> cache = igniteClient.cache(cacheName);
CacheConfiguration<?, ?> cacheConfig = cache.getConfiguration(CacheConfiguration.class);
System.out.println("Cache Name: " + cacheName);
System.out.println("Memory Occupied: " + cache.localSize());
System.out.println("Cache Size: " + cache.size());
System.out.println("Cache Hits: " + cache.metrics().getCacheHits());
System.out.println("Cache Misses: " + cache.metrics().getCacheMisses());
System.out.println("Average Get Time: " + cache.metrics().getAverageGetTime());
System.out.println();
以上方法正确吗?它显示了服务器中的缓存名称,但不显示缓存占用的内存以及缓存使用的持久内存。
Total CPUs: 12
Total Heap Memory: 4294967296
Heap Memory Initialized: 4294967296
Heap Memory Used: 115574800
Total Nodes in Cluster: 1
Cache Name: poswavierCache
Memory Occupied: 0
Cache Size: 131503
Cache Hits: 0
Cache Misses: 0
Average Get Time: 0.0
您可以看到代码从服务器获取缓存名称和大小,但我想要的是服务器使用的持久存储量。