名称
jstatd - 监视被仪器化的Java HotSpot虚拟机的创建和终止
概要
注意:此命令是实验性的,不受支持。
jstatd
[选项]
- 选项
-
这表示
jstatd
命令行选项。请参阅jstatd命令选项。
描述
jstatd
命令是一个RMI服务器应用程序,用于监视被仪器化的Java HotSpot虚拟机的创建和终止,并提供一个接口以启用远程监视工具jstat
和jps
连接到在本地主机上运行的JVM,并收集有关JVM进程的信息。
jstatd
服务器需要在本地主机上有一个RMI注册表。jstatd
服务器尝试连接到默认端口上的RMI注册表,或者您可以使用-p
port
选项指定的端口。如果未找到RMI注册表,则在jstatd
应用程序内创建一个RMI注册表,该注册表绑定到由-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对象的名称唯一。但是,这样做需要在监视客户端的hostid
和vmid
字符串中包含唯一的服务器名称。 -
-J
option -
此选项将Java
option
传递给JVM,其中选项是Java应用程序启动器参考页面上描述的选项之一。例如,-J-Xms48m
将启动内存设置为48 MB。请参阅java。
安全性
jstatd
服务器只能监视具有适当本机访问权限的JVM。因此,jstatd
进程必须以与目标JVM相同的用户凭据运行。某些用户凭据,例如Linux和macOS操作系统中的root用户,具有权限访问系统上任何JVM导出的仪器化。以这些凭据运行的jstatd
进程可以监视系统上的任何JVM,但会引入额外的安全问题。
jstatd
服务器不提供对远程客户端的任何身份验证。因此,运行jstatd
服务器进程会使jstatd
进程具有对网络上任何用户都可以访问的所有JVM导出的仪器化。在您的环境中,这种暴露可能是不希望的,因此在启动jstatd
进程之前,应考虑本地安全策略,特别是在生产环境或不安全的网络上。
出于安全目的,jstatd
服务器使用RMI ObjectInputFilter仅允许反序列化必要的类。
如果您的安全问题无法解决,则最安全的操作是不运行jstatd
服务器,并在本地使用jstat
和jps
工具。但是,使用jps
获取仪器化JVM列表时,列表将不包括在docker容器中运行的任何JVM。
远程接口
jstatd
进程导出的接口是专有的,并且保证会更改。建议用户和开发人员不要对此接口进行编写。
示例
以下是jstatd
命令的示例。jstatd
脚本会自动在后台启动服务器。
内部RMI注册表
此示例显示如何使用内部RMI注册表启动jstatd
会话。此示例假定没有其他服务器绑定到默认RMI注册表端口(端口1099
)。
jstatd
外部RMI注册表
此示例使用外部RMI注册表启动jstatd
会话。
rmiregistry&
jstatd
此示例在端口2020
上启动具有外部RMI注册表的jstatd
会话。
jrmiregistry 2020&
jstatd -p 2020
此示例在端口2020
上启动具有外部RMI注册表服务器和绑定到端口2021
的JMX连接器的jstatd
会话。
jrmiregistry 2020&
jstatd -p 2020 -r 2021
此示例在端口2020上启动具有绑定到AlternateJstatdServerName
的外部RMI注册表的jstatd
会话。
rmiregistry 2020&
jstatd -p 2020 -n AlternateJstatdServerName
停止创建内部RMI注册表
此示例启动一个jstatd
会话,当未找到RMI注册表时不会创建一个。此示例假定RMI注册表已经在运行。如果未运行RMI注册表,则会显示错误消息。
jstatd -nr
启用RMI日志记录
此示例启动一个具有启用RMI日志记录功能的jstatd
会话。此技术对于故障排除或监视服务器活动非常有用。
jstatd -J-Djava.rmi.server.logCalls=true