JJava Runtime Monitor在Java平台及其上运行的应用程序上提供了开箱即用的远程监控和管理。它监控性能指标,例如内存(JVM),垃圾回收(GC)和线程统计信息。可以关联阈值并生成告警。此外,还支持自动线程转储,堆转储和PerformGC等管理操作。Applications Manager支持的不同JVM供应商是Sun JVM,IBM JVM和Oracle JRockit JVM。
Java Runtime 监视器的先决条件:进一步了解要添加到Java Runtime 监控的应用程序中的JVM参数。
使用REST API添加新的Java Runtine监视器:点击此处
Java Runtime 监视器会检查监视器的可用性,响应时间,连接时间(Applications Manager在远程JVM上查找JMX代理所花费的时间)以及下面列出的许多其他参数。
| 参数 | 描述 |
|---|---|
| 监控信息 | |
| Name | JavaRuntime监视器的名称。 |
| Health | 指定JavaRuntime监视器的健康状况(正常,警告,严重)。 |
| Type | 指定要监控的类型。 |
| Host name | 指定运行Java虚拟机的主机。 |
| Port | 指定运行Java虚拟机的端口号。 |
| Host OS | 指定运行JavaRuntime监视器的主机的OS。 |
| JVM | 指定Java虚拟机名称和版本。 |
| Vendor | 指定Java虚拟机供应商名称。 |
| Processor Count | 指定可用于Java虚拟机的处理器数量。 |
| Last Polled at | 指定执行上次轮询的时间。 |
| Next Poll at | 指定计划下一次轮询的时间。 |
| Availability | 显示JavaRuntime监视器的当前状态-可用或不可用。 |
| Connection Time | 连接到Java虚拟机所花费的时间。 |
| 内存池 | |
| Eden Space (Heap Memory) | 最初从中为大多数对象分配内存的池。 |
| Survivor Space (Heap Memory) | 包含已通过GCeden space对象的池。 |
| Tenured Generation (Heap Memory) | 包含survivor space中已存在一段时间的对象的池。 |
| Java Heap | JVM存储对象的空间。 |
| Permanent Generation (Non-Heap)(for versions older than JDK 1.8) | 保留虚拟机本身的所有反射数据,例如类和方法对象。对于使用类数据共享的JVM,这一代被分为只读和读写区域。 |
| MetaSpace(for JDK 1.8) | 用于表示类元数据的本机存储空间称为Metaspace。MetaSpace使用本机内存来存储元数据,并且会自动增长。 |
| Compressed Class Space(for JDK 1.8) | 压缩的类空间仅包含类元数据。 |
| Code Cache (Non-Heap) | 用于编译和存储本机代码的内存。 |
| JIT Code Cache | 内存将转换为汇编程序并存储为更高速度运行。 |
| Nursery | 新分配对象的单独空间。 |
| 类加载 | |
| Classes loaded | 加载的类数。 |
| Classes Unloaded | 卸载类数。 |
| JVM统计信息 | |
| CPU Load | 指定由JVM引起的计算机负载的百分比。 0表示未创建任何负载,100表示所有负载均由JVM创建。 |
| CPU Usage | 这表示服务器上JVM的CPU使用率。 |
| Max file descriptor | 最大允许的打开文件描述符。仅适用于UNIX。 |
| 主机内存 | |
| Total Physical Memory | 物理内存总量(以兆字节为单位)。 |
| Free Physical Memory | 可用物理内存量(以兆字节为单位)。 |
| Total Swap Space | 交换空间总量(以兆字节为单位)。 |
| Committed Virtual Memory | 保证正在运行的进程可用的虚拟内存量(以兆字节为单位)。 |
| 参数 | 描述 |
|---|---|
| 垃圾回收 | |
| Time Spent/Min | 大约消耗的时间(以毫秒为单位)。 |
| Collections/Min | 已发生的收集总数。 |
| Thread Count | 用于垃圾回收的线程数。 |
| Last Start Time | 此GC的开始时间。 |
| Last End Time | 此GC的结束时间。 |
| Memory usage before GC | 此GC开头的所有内存池的内存使用情况。 |
| Memory usage after GC | 此GC末尾所有内存池的内存使用情况。 |
| GC time | 执行垃圾回收所花费的时间。 |
| Compile time | 即时(JIT)编译所花费的时间。 |
| 参数 | 描述 |
|---|---|
| 线程参数 | |
| Total threads started | 自Java虚拟机启动以来创建和启动的线程总数。 |
| Peak Threads | 自Java虚拟机启动或重置峰值以来,活动线程峰值达到峰值。 |
| Live Threads | 当前正在运行的活动线程数。 |
| Daemon Threads | 当前正在运行的守护程序线程数。 |
| Runnable Threads | 在Java虚拟机中执行的线程处于这种状态。 |
| Blocked Threads | 等待监视器锁定而被阻塞的线程处于此状态。 |
| Waiting Threads | 无限期地等待另一个线程执行特定操作的线程处于此状态。 |
| Timed waiting Threads | 一个线程正在等待另一个线程执行操作的时间达到指定的等待时间。 |
| Deadlocked | 处于死锁状态的等待获取对象监视器的线程数。 |
| 参数 | 描述 |
|---|---|
| 配置信息 | |
| Uptime | Java虚拟机的正常运行时间。 |
| Java Virtual Machine | Java虚拟机实现名称。 |
| Vendor | Java虚拟机实施供应商。 |
| Process ID | 进程标识符是一些操作系统内核用来唯一标识进程的数字。 |
| Name | 代表正在运行的Java虚拟机的名称。 |
| VM arguments | 传递给Java虚拟机的输入参数,其中不包括main方法的参数。 |
| Class path | 系统类加载器用来搜索类文件的Java类路径。 |
| Library path | Java库路径。 |
| Boot class path | 引导类加载器用来搜索类文件的引导类路径。 |
| JIT compiler | 即时(JIT)编译器的名称 |
| Objects Pending for finalization | 完成终结的对象的大概数量。 |
| Operating System | 操作系统的名称。 |
| Architecture | 操作系统架构。 |
| Processors | Java虚拟机可用的处理器数。 |
| Max Metaspace | 包含所有其他大型类元数据的最大元空间,包括方法,字节码,常量池等。 |
| Max non-heap | 最大非堆=提交非堆+可用物理内存。 注意:同样在虚拟内存的情况下,我们仅考虑可用物理内存来计算最大Metaspace值。 |
下表列出了Applications Manager支持的不同JVM供应商以及它们监控的主要参数。
| 监控参数 | Sun JVM | IBM JVM | JRockit JVM |
|---|---|---|---|
| Connection Time | ![]() | ![]() | ![]() |
| Memory Usage | ![]() | ![]() | ![]() |
| CPU Usage | ![]() | ![]() | |
| CPU Load | ![]() | ||
| System Memory | ![]() | ![]() | ![]() |
| Process Memory | ![]() | ![]() | ![]() |
| Heap Memory | ![]() | ![]() | ![]() |
| Non Heap Memory | ![]() | ![]() | ![]() |
| VM Statistics | ![]() | ![]() | ![]() |
| Total Physical Memory | ![]() | ![]() | |
| Free Physical Memory | ![]() | ![]() | |
| Total Swap Space | ![]() | ||
| Free Swap Space | ![]() | ||
| Committed Virtual Memory | ![]() | ||
| Garbage Collector- Summary | ![]() | ![]() | ![]() |
| Garbage Collector - View impact for specific collector | ![]() | ||
| Total Threads Started | ![]() | ![]() | ![]() |
| Peak Threads | ![]() | ![]() | ![]() |
| Live Threads | ![]() | ![]() | ![]() |
| Runnable Threads | ![]() | ![]() | ![]() |
| Blocked Threads | ![]() | ![]() | ![]() |
| Waiting Threads | ![]() | ![]() | ![]() |
| Timed Waiting Threads | ![]() | ![]() | ![]() |
| Daemon Threads | ![]() | ![]() | ![]() |
| Deadlocked | ![]() | ![]() | ![]() |
| Configuration Details | ![]() | ![]() | ![]() |
| JVM Actions | ![]() | ![]() | ![]() |
查看线程转储
在线程选项卡下有一个选项可以查看线程转储历史记录。点击线程选项卡中的查看线程转储链接。线程转储页面将在新窗口中打开,您将能够查看当前的线程转储详细信息。关闭此窗口后,线程转储详细信息将移动到线程历史记录部分下。您可以随时在此部分中查看此信息。
报表
我们提供查看实时和任何存在于配置信息部分的属性,历史数据的选项配置选项卡。点击配置选项卡下的任何属性。这将打开一个名为历史数据的新窗口,其中提供了有关这些属性的更多信息。
历史数据窗口中有两个选项卡-历史报表和全局视图。
历史报表:此选项卡提供基于所选时间段的所选属性的历史报表。您也可以使用选择属性下拉框并查看其他属性的报表。
全局视图:此选项卡在多个监视器上显示所选属性的当前值。要查看有关监视器中存在的其他属性的信息,请使用选择属性下拉框并更改属性。
如果要查看多个属性的数据,请点击窗口左上角的自定义列链接。这将带您进入编辑全局视图页面。在此页面中,可以使用按监视器类型筛选下拉框来更改监视器类型,选择要显示的指标,并以监视器或业务组为基础显示监视器。选择选项后,点击显示报表按钮以在全局视图选项卡中查看那些信息。
注意:如果未在安装Applications Manager的计算机上建立jmx连接,请使用此密钥并重新启动应用程序:
-Djava.rmi.server.hostname = YOUR_IP
它允许我们跟踪关键指标,如响应时间、资源利用率、错误率和交易性能。实时监控告警会及时通知我们任何问题或异常,使我们能够立即采取行动。
审稿人角色:研究与开发

Lexmark技术支持经理