当前教程
Jstatd - 监控您的 JVM 的创建和终止
这是本系列的最后一篇!

系列中的上一篇: Jstat - 监控您的 JVM 统计信息

Jstatd - 监控您的 JVM 的创建和终止

 

介绍 Jstatd

jstatd - 监控已检测的 Java HotSpot VM 的创建和终止

 

概要

注意:此命令为实验性命令,不受支持。

jstatd [options]

选项

这表示 jstatd 命令行选项。请参阅 Jstatd 命令的选项.

 

描述

jstatd 命令是一个 RMI 服务器应用程序,它监控已检测的 Java HotSpot VM 的创建和终止,并提供一个接口,使远程监控工具 jstatjps 能够连接到在本地主机上运行的 JVM,并收集有关 JVM 进程的信息。

jstatd 服务器需要本地主机上的 RMI 注册表。jstatd 服务器尝试连接到默认端口上的 RMI 注册表,或者连接到您使用 -p port 选项指定的端口。如果未找到 RMI 注册表,则将在 jstatd 应用程序中创建一个注册表,该注册表绑定到由 -p port 选项指示的端口,或者在省略 -p port 选项时绑定到默认 RMI 注册表端口。您可以通过指定 -nr 选项来停止创建内部 RMI 注册表。

 

Jstatd 命令的选项

-nr

此选项在未找到现有 RMI 注册表时,不会尝试在 jstatd 进程中创建内部 RMI 注册表。

-p port

此选项设置预期找到 RMI 注册表的端口号,或者在未找到时,在未指定 -nr 选项的情况下创建注册表。

-r rmiport

此选项设置 RMI 连接器绑定的端口号。如果未指定,则使用随机可用端口。

-n rminame

此选项设置在 RMI 注册表中绑定远程 RMI 对象的名称。默认名称为 JStatRemoteHost。如果在同一主机上启动了多个 jstatd 服务器,则可以通过指定此选项使每个服务器的导出 RMI 对象的名称变得唯一。但是,这样做需要在监控客户端的 hostidvmid 字符串中包含唯一的服务器名称。

-Joption

此选项将 Java option 传递给 JVM,其中选项是 Java 应用程序启动器参考页上描述的选项之一。例如,-J-Xms48m 将启动内存设置为 48 MB。请参阅 java.

 

安全性

jstatd 服务器只能监控它具有相应本机访问权限的 JVM。因此,jstatd 进程必须以与目标 JVM 相同的用户凭据运行。某些用户凭据(例如 Linux 和 OS X 操作系统中的 root 用户)具有访问系统上任何 JVM 导出的检测的权限。以这种凭据运行的 jstatd 进程可以监控系统上的任何 JVM,但这会带来额外的安全问题。

jstatd 服务器不提供任何远程客户端身份验证。因此,运行 jstatd 服务器进程会将 jstatd 进程具有访问权限的所有 JVM 导出的检测公开给网络上的任何用户。这种公开在您的环境中可能是不可取的,因此,在启动 jstatd 进程之前,应考虑本地安全策略,尤其是在生产环境或不安全的网络中。

jstatd 服务器在未安装其他安全管理器的情况下安装 RMISecurityPolicy 的实例,因此需要指定安全策略文件。策略文件必须符合默认策略实现和策略文件语法。

如果您的安全问题无法通过自定义策略文件解决,那么最安全的做法是不运行 jstatd 服务器,并在本地使用 jstatjps 工具。但是,当使用 jps 获取已检测 JVM 的列表时,该列表将不包括在 docker 容器中运行的任何 JVM。

 

远程接口

jstatd 进程导出的接口是专有的,并且保证会发生变化。不鼓励用户和开发人员写入此接口。

 

示例

以下是 jstatd 命令的示例。jstatd 脚本会自动在后台启动服务器。

内部 RMI 注册表

此示例演示如何使用内部 RMI 注册表启动 jstatd 会话。此示例假设没有其他服务器绑定到默认 RMI 注册表端口(端口 1099)。

jstatd -J-Djava.security.policy=all.policy

外部 RMI 注册表

此示例使用外部 RMI 注册表启动 jstatd 会话。

rmiregistry&
jstatd -J-Djava.security.policy=all.policy

此示例使用端口 2020 上的外部 RMI 注册表服务器启动 jstatd 会话。

jrmiregistry 2020&
jstatd -J-Djava.security.policy=all.policy -p 2020

此示例使用端口 2020 上的外部 RMI 注册表服务器启动 jstatd 会话,并将 JMX 连接器绑定到端口 2021

jrmiregistry 2020&
jstatd -J-Djava.security.policy=all.policy -p 2020 -r 2021

此示例使用端口 2020 上的外部 RMI 注册表启动 jstatd 会话,该注册表绑定到 AlternateJstatdServerName

rmiregistry 2020&
jstatd -J-Djava.security.policy=all.policy -p 2020 -n AlternateJstatdServerName

停止创建进程内 RMI 注册表

此示例启动一个 jstatd 会话,该会话在未找到 RMI 注册表时不会创建注册表。此示例假设 RMI 注册表已在运行。如果 RMI 注册表未运行,则会显示错误消息。

jstatd -J-Djava.security.policy=all.policy -nr

启用 RMI 日志记录

此示例启动一个启用了 RMI 日志记录功能的 jstatd 会话。此技术作为故障排除工具或用于监控服务器活动非常有用。

jstatd -J-Djava.security.policy=all.policy -J-Djava.rmi.server.logCalls=true

上次更新: 2021 年 9 月 14 日


当前教程
Jstatd - 监控您的 JVM 的创建和终止
这是本系列的最后一篇!

系列中的上一篇: Jstat - 监控您的 JVM 统计信息