jvm 监控 - 从命令行

jvm monitoring - from command line

我正在 Linux VM 中寻找 运行 的命令,以持续监控我的客户端的以下指标:

jvm.cpu_load.process
jvm.thread_count
jvm.non_heap_memory
jvm.heap_memory_max

你能帮我找到获取这些指标的确切命令吗?

您可以通过运行 jcmd 反复针对您的流程获取一些此类信息。 运行 jcmd <pid> help 以了解您的 JVM 支持什么。例如,您可以通过 运行 jcmd <pid> GC.heap_info.

获取有关进程使用内存的信息

但是,如果您想定期获取此信息,您应该考虑编写一个程序来查询 JMX (https://docs.oracle.com/en/java/javase/15/management/monitoring-and-management-using-jmx-technology.html) or by using JFR to gain this data. If you're Java 14 o above, then you can use JFR Streaming to process the data as it comes off (added in JEP 394)。

JFR 是一种永远在线的分析机制,它会定期转储您可以处理的数据,但在非流模式下,它会在收集到特定数量的数据后转储内容。

如果您只想远程监控指标,那么编写 JMX 工具可能是推荐的方法,或者使用现有工具(如 NewRelic 的代理或 Netflix's Servo 库)通过 JMX 获取此数据如果你不想自己写。