jstatd - Virtual Machine jstat Daemon
jstatd 【options】
参数:options
命令行参数,可以按任何顺序,但如果有多余的或者中有互斥的参数,最后制定的那个参数将有优先权
options:
-nr 当一个存在的RMI Registry没有找到时,不尝试创建一个内部的RMI Registry -p port RMI Registry将会被找到的端口,如果没有找到,而且-nr没有指定,则新建一个RMI Registry。默认为1099
-n rminame remote RMI对象会被绑定到的RMI Registry的名字,默认的名字为JStatRemoteHost.如果多个jstatd服务在同一台机子上启动了,每个jstatd服务的对外的 RMI对象的名字可由该参数指定。这么做要求唯一的server name被包含在监控客户端的hostid和vmid串中。 -J 将参数传给被javac调用的java launcher。例如:-J-Xms48m设置了启动内存为48m,由-J传递java程序vm参数是一种惯例
Security
jststd只能监控有适当的本地接入的JVM,因此jstatd进程必须用和目标jvm的相同的用户凭证。有些用户凭证,如unix系统下的root用户,有权限进入到系统里任何一个由 JVM启动的设备,用这种用户凭证启动的jstatd能够监控任何一个jvm,但会引入潜在的安全隐患。jstatd并不提供给任何一个远程客户端用户凭证,如此,运行一个jstatd serve进程会将其有权限访问的jvm设备暴露给网络上的用户。这种暴露对用户来说并不受欢迎,在起订jstatd进程钱必须考虑本地安全策略。特别是在生产环境或者不安全 的网络中。如果没有安装其他的安全管理,并且要求指定一个安全策略文件,jstatd服务会安装一个RMISecurityPolicy。下面的策略将会允许jstatd服务在没有任何security exception中运行:
grant codebase "file:${java.home}/../lib/tools.jar" {
permission java.security.AllPermission;
};
将以上内容保存到jstatd.all.policy的文件中,文件位置可任意。启动jstatd:
jstatd -J-Djava.security.policy="xxxxx/jstatd.all.policy" xxxxx代表的是绝对路径
远程监控:启动RMI服务样例:
(1)使用内部RMI Registry
jstatd -J-Djava.security.policy=all.policy (默认端口为1099)
(2)使用外部RMI Registry
a)使用默认值
rmiregistry&
jstatd -J-Djava.security.policy=all.policy
b)使用2020端口
netstat -tulanp | grep 1099 查看1099端口是否被占用了,如果被占用,则需要选择其他端口来启动jstatd服务
rmiregistry 2020&
jstatd -J-Djava.security.policy=all.policy -p 2020
c)使用2020端口,使用rminame
rmiregistry 2020&
jstatd -J-Djava.security.policy=all.policy -p 2020 -n AlternateJstatdServerName
(3)RMI Registry已经启动,不创建内部RMI Registry
jstatd -J-Djava.security.policy=all.policy -nr
(4)RMI日志能力
jstatd -J-Djava.security.policy=all.policy -J-Djava.rmi.server.logCalls=true
而后在VisualVM中就添加远程连接,选择jstatd方式,就可以监控JVM的运行情况了。
远程监控tomcat服务:
JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=10201 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false"
而后在VisualVM中就添加远程连接,选择jmx方式,就可以监控tomcat的运行情况了
-------------------------------------------------------------------------------
下载地址:http://visualvm.java.net/download.html
插件安装
tools->plugin->Available Plugin 会有值得安装的插件,如:VisualGC JConsole

jstatd - Virtual Machine jstat Daemon的更多相关文章
- JVM常用命令和性能调优建议 [Could not create the Java virtual machine]
一.查看jvm常用命令jinfo:可以输出并修改运行时的java 进程的opts. jps:与unix上的ps类似,用来显示本地的java进程,可以查看本地运行着几个java程序,并显示他们的进程号. ...
- 《Remus: High Availability via Asychronous Virtual Machine Replication》翻译
Abstract 想要让应用能够躲过硬件故障是一项非常昂贵的任务,因为这通常意味着对软件进行重构,使它包含复杂的恢复逻辑的同时需要部署专用的硬件,而这些对于提升大型的或者遗留的应用的可靠性是巨大的障碍 ...
- Java虚拟机(Java Virtual Machine)
JVM(Java Virtual Machine),Java虚机机,是JDK最底层的东西.只要能将源代码编译成字节码(.class)文件,就可以由JVM在不同平台上解释成机器指令来执行.所以,Java ...
- Virtual Machine Definition File 2.2
Virtual Machine Definition File 2.2 http://archives.opennebula.org/documentation:archives:rel2.2:tem ...
- 虚拟机(Virtual Machine)和容器(Container)的对比
目前云计算平台常用的虚拟化技术有虚拟机(Virtual Machine)和容器(Container)两种.虚拟机已经是比较成熟的技术,容器技术作为下一代虚拟化技术,国内的各厂商应用还不广,但似乎其代表 ...
- Azure PowerShell (6) 设置单个Virtual Machine Endpoint
<Windows Azure Platform 系列文章目录> 请注意: - Azure不支持增加Endpoint Range - 最多可以增加Endpoint数量为150 http:// ...
- Azure PowerShell (7) 使用CSV文件批量设置Virtual Machine Endpoint
<Windows Azure Platform 系列文章目录> 请注意: - Azure不支持增加Endpoint Range - 最多可以增加Endpoint数量为150 http:// ...
- (学)解决VMware Taking ownership of this virtual machine failed
原文:http://blog.csdn.net/fisher_jiang/article/details/6992588背景: 一次crash可能会造成虚拟机锁死的情况发生现象:点击take owne ...
- Azure Virtual Machine 之 如何利用Management Class Libraries 创建VM
之前发的blog简单的介绍了如何使用Management Class Libraries 来控制Azure platform. 但由于官方并没有提供文档,所以我们只能够通过自己研究来摸索使用该类库的方 ...
随机推荐
- QString 和char数组转换(转)
在qt开发过程中经常遇到QString类和char数组进行转换,在此记录一下: QString->char数组 1 2 3 QString str="12fff"; QByt ...
- go test 初始化--- TestMain的使用
go test 功能,提高了开发和测试的效率. 有时会遇到这样的场景: 进行测试之前需要初始化操作(例如打开连接),测试结束后,需要做清理工作(例如关闭连接)等等.这个时候就可以使用TestMain( ...
- 转 WCF中同步和异步通讯总结
我这样分个类: WCF中, 以同步.异步角度考虑通讯的方式分为四种:跨进程同步.跨进程异步.发送队列端同步.发送队列端异步.之所以造成这样的结果源于两个因素,一个是传统概念上的同异步,一个是对于WCF ...
- 我的JdbcUtils类
这是目录结构: 其中后面三个类都是第一个类的子类,第一个类是父类. JdbcUtils: package com.smt.db; import java.io.IOException; import ...
- 实验七 c字符数组和字符串函数
7.1 #include<stdio.h>#include<string.h> int main(){ char a[40]; int i; gets(a); //输入字符串进 ...
- 学习笔记之Unit testing/Integration testing/dotnet test and xUnit
source code https://github.com/haotang923/dotnet/tree/master/src Unit testing C# code in .NET Core u ...
- Mysql 锁技术要点【转载】
MyISAM和InnoDB的区别 MySQL默认采用的是MyISAM. MyISAM不支持事务,而InnoDB支持.InnoDB的AUTOCOMMIT默认是打开的,即每条SQL语句会默认被封装成一个事 ...
- echo off
就是说关闭回显 @echo off并不是DOS程序中的,而是DOS批处理中的.当年的DOS,所有操作都用键盘命令来完成,当你每次都要输入相同的命令时,可以把这么多命令存为一个批处理,从此以后,只要运行 ...
- 6.27-JSTL、标签、分页
一.JSTL 条件标签: <c:if> if if(){ }else if(){ }else{ } <c:choose> <c:when></c:when&g ...
- 第10课 struct 和 union 分析
1. struct的小秘密 (1)C语言中的struct可以看作变量的集合 (2)struct的问题——空结构体占用多的内存? [实例分析]空结构体的大小 #include <stdio.h&g ...