【发布时间】:2015-09-15 20:11:34
【问题描述】:
我必须在页面上显示 jvm 内存使用数据。我需要找到 jvm 内存统计信息,例如可用内存和最大内存。
java 运行时函数只提供一个 jvm 的数据。对于由 4 个 jvm 组成的 jvm 集群,我如何找到它。
如果可能的话,它可能是一个 unix 命令或一些 java 函数。
【问题讨论】:
-
通过 jmx 定期轮询每个 jvm - 或使用诸如 newrelic 之类的工具/服务
我必须在页面上显示 jvm 内存使用数据。我需要找到 jvm 内存统计信息,例如可用内存和最大内存。
java 运行时函数只提供一个 jvm 的数据。对于由 4 个 jvm 组成的 jvm 集群,我如何找到它。
如果可能的话,它可能是一个 unix 命令或一些 java 函数。
【问题讨论】:
没有“jvm 集群”这样的东西,因为 JVM 不能真正集群。即JVM本身没有集群能力。
程序(它们本身在 jvm 上运行)可以使用第三方工具或库(或通过自己编写相关代码,我不建议这样做)进行集群。
这意味着,由于没有 core-jdk 对集群的支持,因此也没有可以为集群提供某些值的 java 函数调用。您用于集群程序的软件/工具/库可能能够提供此信息,但您必须在文档中查找。
出于同样的原因,也没有 unix 调用。 *nix 操作系统对您的 java 集群一无所知,它们只知道在它们上运行的进程使用 CPU 和内存并且可能执行一些 I/O。他们不知道任何聚类,因此无法帮助您解决问题。
所以,要找到你要找的东西:
如果它是一个真正的扩展集群,即工作负载自动分配到集群中的不同 jvm 上,您必须查看您使用的集群软件(工具/库)的文档看看他们是否可以为您提供这些信息。
如果您使用第三方应用程序(例如 Zabbix)来监控不同的 JVM,您可能会构建一个屏幕或视图,以便在一个屏幕中显示多个 JVM 的数据。同样,您必须在该工具的文档中查找。
【讨论】:
因为 JVM 不支持开箱即用的集群。 (假设您指的是标准的 oracle 发行版) 您将不得不开发来自不同 JVM 的 JVM 内存统计信息的聚合。
【讨论】: