jstatd,即虚拟机的jstat守护进程,主要用于监控JVM的创建与终止,并提供一个接口允许远程监控工具依附到在本地主机上运行的JVM。

用法摘要

jstatd [ options ]
options
命令行选项。这些选项可以是任意顺序。如果存在多余的或者自相矛盾的选项,则优先考虑最后的选项。

描述

jstatd工具是一个RMI服务器应用程序,主要用于监控HotSpot Java 虚拟机的创建与终止,并提供一个接口以允许远程监控工具附加到本地主机上运行的JVM上。

jstatd服务器需要在本地主机上存在一个RMI注册表。jstatd服务器将尝试在默认端口或-p port选项指定的端口附加到该RMI注册表上。如果RMI注册表不存在,jstatd应用程序将会自动创建一个,并绑定到-p port选项指定的端口上,如果省略了-p port选项,则绑定到默认的RMI注册表端口。你可以通过指定-nr选项来抑制内部RMI注册表的创建。

注意:此工具是不受支持的,并且无法确定在未来版本的JDK中是否可用。目前,此工具不适用于Windows 98和Windows ME平台。

选项

-nr
当找不到现有的RMI注册表时,不尝试使用jstatd进程创建一个内部的RMI注册表。
-p port
在指定的端口查找RMI注册表。如果没有找到,并且没有指定-nr选项,则在该端口自行创建一个内部的RMI注册表。
-n rminame
RMI注册表中绑定的RMI远程对象的名称。默认的名称为JStatRemoteHost。如果多个jstatd服务器在同一主机上运行,你可以通过指定该选项来让每个服务器导出的RMI对象具有唯一的名称。不管如何,这样做需要将唯一的服务器名称包含进监控客户端的hostid和vmid字符串中。
-Joption
将选项参数传递给被javac调用的java启动程序。例如,-J-Xms48m设置启动内存为48 MB。使用-J将选项参数传递给执行Java应用程序的底层虚拟机,这是一种常见惯例。

安全性

jstatd只能够监控具有适当的本地访问权限的JVM。因此,jstatd进程必须以与目标JVM相同的用户凭证来运行。某些用户凭据,例如基于Unix系统的root用户,有权限访问系统中任何JVM导出的instrumentation。以此凭据运行的jstatd进程可以监控系统上的任何JVM,但会引入一些额外的安全隐患。

jstatd服务器不提供远程客户端的任何授权许可。因此,通过那些jstatd进程有权访问网络中任何用户的所有JVM,运行jstatd进程会暴露instrumentation出口。这种接触可能不是你的当前环境所想要的;在启动jstatd进程之前,尤其是和生产环境或者非安全的网络中,你应该考虑本地的安全策略。

如果没有安装其他的安全管理器,jstatd服务器会安装一个RMISecurityPolicy的实例,因此需要指定一个安全策略文件。策略文件必须遵循该默认策略实现的策略文件语法

下列策略文件将允许jstatd服务器在没有任何安全例外的情况下运行。该策略没有授权所有权限给所有代码库那么自由,但却比授予最小的权限来运行jstatd服务器更自由。

grant codebase "file:${java.home}/../lib/tools.jar" {
permission java.security.AllPermission;
};

为了使用此策略,请复制上述文本到一个名叫jstatd.all.policy的文件中,并使用如下命令运行jstatd服务器:

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

对于具有更严格的安全实践的网络场所而言,可能使用一个自定义的策略文件来显示对特定的可信主机或网络的访问,尽管这种技术容易受到IP地址欺诈攻击。 如果你的安全问题无法使用一个定制的策略文件来处理,那么最安全的操作是不运行jstatd服务器,而是在本地使用jstat和jps工具。

远程接口

jstatd进程输出的接口是私有的,并会产生变化。不鼓励用户和开发者往此接口写入数据。

示例

这里有一些启动jstatd的示例。注意,jstatd脚本会自动在后台启动服务器。

1、使用内部的RMI注册表

本示例演示启动jstatd,并使用内部RMI注册表。本示例假定没有其它服务器绑定到默认的RMI注册表端口(端口号 1099)。

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

2、使用外部的RMI注册表

本示例演示启动jstatd,并使用外部RMI注册表。

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

本示例演示启动jstatd,并使用端口2020上的外部RMI注册表。

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

本示例演示启动jstatd,并使用端口2020上的外部RMI注册表,绑定的RMI远程对象名称为AlternateJstatdServerName。

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

3、抑制进程中的RMI注册表的创建

本示例演示启动jstatd,而且即使找不到现有的RMI注册表,也不会创建一个新的RMI注册表。本示例假定已经有一个RMI注册表在运行中。如果没有,则发出适当的错误信息。

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

4、启动RMI日志能力

本示例演示启动jstatd,并启用RMI日志功能。该技术对于故障排除的援助或者监控服务器活动非常有用。

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

5、远程连接实例

在JDK的bin目录下新建jstatd.all.policy文件(其实目录可以自己选择)键入一下代码用于启动JSTATD:

vim jstatd.all.policy
#内容如下
grant codebase "file:${java.home}/../lib/tools.jar" {
permission java.security.AllPermission;
};

启动

jstatd -J-Djava.security.policy=/opt/jstatd.all.policy(文件的目录/jstatd.all.policy) -p 123(端口号,用于Java VisualVM远程链接)

使用VisualVM进行远程连接,在JAVA_HOME/bin下找到jvisualvm,启动输入远程IP+端口号即可。

参考:

http://www.softown.cn/post/188.html(以上内容转自此篇文章)

http://www.cnblogs.com/guoximing/articles/6110319.html

JDK工具jstatd用法详解(转)的更多相关文章

  1. 扫描工具——Nmap用法详解

    Nmap使用 Nmap是主机扫描工具,他的图形化界面是Zenmap,分布式框架为Dnamp. Nmap可以完成以下任务: 主机探测 端口扫描 版本检测 系统检测 支持探测脚本的编写 Nmap在实际中应 ...

  2. Mysql导入导出工具Mysqldump和Source命令用法详解

    Mysql本身提供了命令行导出工具Mysqldump和Mysql Source导入命令进行SQL数据导入导出工作,通过Mysql命令行导出工具Mysqldump命令能够将Mysql数据导出为文本格式( ...

  3. [转]Mysql导入导出工具Mysqldump和Source命令用法详解

    Mysql本身提供了命令行导出工具Mysqldump和Mysql Source导入命令进行SQL数据导入导出工作,通过Mysql命令行导出工具Mysqldump命令能够将Mysql数据导出为文本格式( ...

  4. PowerShell攻防进阶篇:nishang工具用法详解

    PowerShell攻防进阶篇:nishang工具用法详解 导语:nishang,PowerShell下并肩Empire,Powersploit的神器. 开始之前,先放出个下载地址! 下载地址:htt ...

  5. Sqlmap 工具用法详解

    Sqlmap 工具用法详解                                 sqlmap是一款自动化的sql注入工具.     1.主要功能:扫描.发现.利用给定的url的sql注入漏 ...

  6. linux管道命令grep命令参数及用法详解---附使用案例|grep

    功能说明:查找文件里符合条件的字符串. 语 法:grep [-abcEFGhHilLnqrsvVwxy][-A<显示列数>][-B<显示列数>][-C<显示列数>] ...

  7. linux curl用法详解

    linux ‍‍curl用法详解 ‍‍curl的应用方式,一是可以直接通过命令行工具,另一种是利用libcurl库做上层的开发.本篇主要总结一下命令行工具的http相关的应用, 尤其是http下载方面 ...

  8. 教程-Delphi中Spcomm使用属性及用法详解

    Delphi中Spcomm使用属性及用法详解 Delphi是一种具有 功能强大.简便易用和代码执行速度快等优点的可视化快速应用开发工具,它在构架企业信息系统方面发挥着越来越重要的作用,许多程序员愿意选 ...

  9. ava下static关键字用法详解

    Java下static关键字用法详解 本文章介绍了java下static关键字的用法,大部分内容摘自原作者,在此学习并分享给大家. Static关键字可以修饰什么? 从以下测试可以看出, static ...

随机推荐

  1. codevs1557 热浪(堆优化dijkstra)

    1557 热浪  时间限制: 1 s  空间限制: 256000 KB  题目等级 : 钻石 Diamond 题解  查看运行结果     题目描述 Description 德克萨斯纯朴的民眾们这个夏 ...

  2. [Swift通天遁地]四、网络和线程-(6)检测网络连接状态

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...

  3. [Swift通天遁地]九、拔剑吧-(4)使用开源类库创建可滑动的Segment分段控件

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...

  4. Vue中nextTick()解析

    最近,在开发的时候遇到一个问题,让我对vue中nextTick()的用法加深了了解- 下面是在组件中引用的一个拖拽的组件: <vue-draggable-resizable class=&quo ...

  5. dubbo+zookeeper下生产者和消费者配置(基于springboot开发)

    一.总共分为三个目录: dubbo-api      服务的接口用于对接客户端和服务端 dubbo-client     客户端配置文件为:consumer.xml dubbo-service  服务 ...

  6. CSS-类和ID选择器的区别

    学习了类选择器和ID选择器,我们会发现他们之间有很多的相似处,是不是两者可以通用呢?我们不要着急先来总结一下他们的相同点和不同点: 相同点:可以应用于任何元素不同点: 1.ID选择器只能在文档中使用一 ...

  7. Hadoop基础(一)

    Hadoop 基础知识 大数据已经火了很长很长时间了,从最开始是个公司都说自己公司的数据量很大,我们在搞大数据.到现在大数据真的已经非常成熟并且已经在逐渐的影响我们的生产生活.你可能听过支付宝的金融大 ...

  8. 关于MVC视图下拉菜单绑定与取值的问题

    绑定视图中dropdownlist: 视图中的代码: @Html.DropDownList("select1") 此处的slect1也就是页面上的<select>< ...

  9. HashMap的尾部遍历问题--Tail Traversing

    在看网上HashMap的resize()设计时,提到尾部遍历.   JDK1.7的HashMap在实现resize()时,新table[]的列表采用LIFO方式,即队头插入.这样做的目的是:避免尾部遍 ...

  10. Python元类(metaclass)以及元类实现单例模式

    这里将一篇写的非常好的文章基本照搬过来吧,这是一篇在Stack overflow上很热的帖子,我看http://blog.jobbole.com/21351/这篇博客对其进行了翻译. 一.理解类也是对 ...