导航:首页 > 编程语言 > jstatd端口

jstatd端口

发布时间:2021-02-17 02:46:31

Ⅰ 如何使用JVisualVM进行性能分析

1、本地机器的程序直接可以监听到

2、远程机器的程序需要加上JVM参数

-Dcom.sun.management.jmxremote=
true

-Dcom.sun.management.jmxremote.port=
9090

-Dcom.sun.management.jmxremote.ssl=
false

-Dcom.sun.management.jmxremote.authenticate=
false

备注:另外需要检查

hostname –i

看解析出来是否为本地的IP,如是127.0.0.1或者IP为多个IP中之一,则其他的IP无效,会连接不上。

这里有个分析案例,利用jvisualvm分析tomcat的问题:

http://blog.tty.nl/2010/09/03/using-visualvm-to-fix-live-tomcat-and-jvm-problems

插件安装

tools->plugin->Available Plugin 会有值得安装的插件,如:VisualGC
JConsole

插件列表:https://visualvm.dev.java.net/plugins.html

注意:上面提供的端口配置有些麻烦,不如直接这样做:

要使用 VisualGC
必须在远程机上启动jstatd代理程序,否则会显示 “not supported for this jvm” 错误

而启动 jstatd 时会有一个权限问题,需要做如下修改:

nano /opt/sun-jdk-
1.6
.
0.26
/jre/lib/security/java.policy

Java代码
nano /opt/sun-jdk-1.6.0.26/jre/lib/security/java.policy

增加下列行

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

};

然后启动 jstatd并且不要关闭

如:

Threads

查看线程的运行情况,运行、停止、睡眠、等待,根据这些结合实际程序运行的逻辑分析。

找到可疑份子,可以Thread Dump 找出具体是哪个线程在作祟。

参看这个例子:http://blog.tty.nl/2010/09/03/using-visualvm-to-fix-live-tomcat-and-jvm-problems

profile

关于如何使用,如何分析程序,可以参看这个例子:http://www.baptiste-wicht.com/2010/07/profile-applications-java-visualvm/

Ⅱ 如何用VisualVM连接远程Tomcat

1、设置Tomcat的JAVA_OPTS参数:
JAVA_OPTS="$JAVA_OPTS
-Dcom.sun.management.jmxremote=true
-Dcom.sun.management.jmxremote.port=9090
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
-Djava.rmi.server.hostname=10.154.252.108"

此处IP填的是所在远程机器的IP(hostname -i ),需要确保这个端口没程序占用。
可以直接把这个参数写入到catalina.sh文件中。

2、添加JMX连接,并填入IP和刚刚设置的端口。

连接完成之后,监视、线程、概述选项卡可以正常显示,也可以添加插件,选择“工具 - 插件”。可以添加新的插件,此处我们添加了一个名叫 Visual GC 的插件,用于监控JVM 的垃圾回收情况。

4、美中不足的是, Visual GC 并不买账,无法显示。

Visual GC uses the jvmstat technology to gather data from the monitored application. This means that the monitored application must either run locally or there must be a jstatd agent up and running on the remote system. For remote applications added using the JMX connection you will only see the "Not supported for this JVM" message - there's no jvmstat available.
引用自:https://blogs.oracle.com/nbprofiler/entry/visual_gc_plugin_2_0
使用JMX监控的功能不支持Visual GC,需要以jstatd的方式来监控。

5、使用Jstatd方式关联监控
Jstatd方法是利用后台的RMI守护进程来实现对远程JVM的监控。启动jstatd不复杂,
找到tomcat所在机器的Java目录,在bin目录下首先创建一个监控策略文件:
?

1
2
3
4

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

把"${java.home}/../"替换成JAVA安装目录。然后执行如下命令启动jstatd:jstatd -J-Djava.security.policy=jstatd.all.policy

查看jstatd是否启动:
[root@vm-10-154-252-108 bin]# jps -l 127.0.0.1
8618 sun.tools.jps.Jps
7516 sun.tools.jstatd.Jstatd
15815 org.apache.catalina.startup.Bootstrap
7670 org.apache.catalina.startup.Bootstrap
21315 org.apache.catalina.startup.Bootstrap
21481 org.apache.catalina.startup.Bootstrap
11470 org.apache.catalina.startup.Bootstrap
15649 org.apache.catalina.startup.Bootstrap
15732 org.apache.catalina.startup.Bootstrap
21398 org.apache.catalina.startup.Bootstrap
11634 org.apache.catalina.startup.Bootstrap

5、删除VisualVM之前对Tomcat的监控,添加“远程主机”,输入主机IP,通过“高级设置”可以看到远程主机默认是jstatd方式监控的。

点击确定,将会列出该机器上所有的可监控的Java程序,

找到我们需要监控的程序PID,双击:

Ⅲ jstatd 是用java写的么

1、介绍
jstatd是一个基于RMI(Remove Method Invocation)的服务程序,它用于监控基于HotSpot的JVM中资源的创建及销毁,并且提供了一个远程接口允许远程的监控工具连接到本地的JVM执行命令。
jstatd是基于RMI的,所以在运行jstatd的服务器上必须存在RMI注册中心,如果没有通过选项"-p port"指定要连接的端口,jstatd会尝试连接RMI注册中心的默认端口。后面会谈到如何连接到一个默认的RMI内部注册中心,如何禁止默认的RMI内部注册中心的创建,以及如何启动一个外部注册中心。

2、参数选项
jstatd命令支持如下的选项:
-nr 如果RMI注册中心没有找到,不会创建一个内部的RMI注册中心。
-p port RMI注册中心的端口号,默认为1099。
-n rminame 默认为JStatRemoteHost;如果同一台主机上同时运行了多个jstatd服务,rminame可以用于唯一确定一个jstatd服务;这里需要注意一下,如果开启了这个选项,那么监控客户端远程连接时,必须同时指定hostid及vmid,才可以唯一确定要连接的服务,这个可以参看jps章节中列出远程服务器上Java进程的示例。
-J 用于传递jvm选项到由javac调用的java加载器中,例如,“-J-Xms48m”将把启动内存设置为48M,使用-J选项可以非常方便的向基于Java的开发的底层虚拟机应用程序传递参数。

linux上如何安装jstatd服务

此命令是一个RMI Server应用程序,提供了对JVM的创建和结束监视,也为远程监视工具提供了一个可以attach的接口

options
-nr 当一个存在的RMI Registry没有找到时,不尝试创建一个内部的RMI Registry
-p port 端口号,默认为1099
-n rminame 默认为JStatRemoteHost;如果多个jstatd服务开始在同一台主机上,rminame唯一确定一个jstatd服务
-J jvm选项

jstatd
会报如下错误:
Could not create remote object access denied (java.util.PropertyPermission java.rmi.server.ignoreSubClasses write) java.security.AccessControlException: access denied (java.util.PropertyPermission java.rmi.server.ignoreSubClasses write) at java.security.AccessControlContext.checkPermission(AccessControlContext.java:323) at java.security.AccessController.checkPermission(AccessController.java:546) at java.lang.SecurityManager.checkPermission(SecurityManager.java:532) at java.lang.System.setProperty(System.java:727) at sun.tools.jstatd.Jstatd.main(Jstatd.java:122)

这是因为没有给jstatd指定安全策略

创建安全策略文件,并命名为jstatd.all.policy
grant codebase "file:${java.home}/../lib/tools.jar" {
permission java.security.AllPermission;
};

再次启动
C:\Program Files\Java\jdk1.6.0_16\bin>jstatd -J-Djava.security.policy=jstatd.all.policy

利用jps查看正在运行的java命令
jps
C:\Documents and Settings\lulu>jps
4892 Bootstrap
1296 Jstatd
4484 Jps
3332 org.eclipse.equinox.launcher_1.0.201.R35x_v20090715.jar

此时就可以使用jvisualvm.exe以远程的方式监控JVM相关信息了。
更多例子
(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端口
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

Ⅳ java RMI 如何返回远程对象的引用

利用java的对象序列化和反序列化来传递对象就OK了。

序列化需要实现接口Serializable
需要定义序列化idserialVersionUID;

大致代码如下:

	cvoidSerializePerson()throwsFileNotFoundException,IOException{
Objectobj=newObject();
//ObjectOutputStream对象输出流,将对象存储到E盘的obj.txt文件中,完成对Object对象的序列化操作
ObjectOutputStreamos=newObjectOutputStream(newFileOutputStream(newFile("E:/obj.txt")));
os.writeObject(obj);
System.out.println("序列化成功!");
os.close();
}

()throwsException,IOException{
ObjectInputStreamois=newObjectInputStream(newFileInputStream(newFile("E:/obj.txt")));
Objectobj=ois.readObject();
System.out.println("反序列化成功!");
returnobj;
}

另外有点好奇RMI这玩意多麻烦呀,老早就没啥人用了吧。。。。。。

对了 序列化成JSON格式,接收后再转换回来会更方便!

Ⅵ java visualvm监控linux系统tomcat需要怎么配置

方法一
修改catalina.sh,添加下面一行:
CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote=true -Djava.rmi.server.hostname=192.168.1.106 -Dcom.sun.management.jmxremote.port=8086 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false "
注意点:
1、用hostname -i 查看是否为127.0.01,如果是,则必须配置-Djava.rmi.server.hostname为本机IP。
2、检查防火墙(iptables)是否开启,以及是否开放jmxremote.port所指定的端口。

方法二

1、在JDK/bin下新建一文本文件, 名称 jstatd.all.policy
内容如下:
grant codebase "file:${java.home}/../lib/tools.jar" {
permission java.security.AllPermission;
};

2、运行tomcat
3、运行 jstatd -J-Djava.security.policy=jstatd.all.policy
若需要指定端口,使用jstatd -J-Djava.security.policy=all.policy -p 1982
若需要指定本机IP,使用-J-Djava.rmi.server.hostname=192.168.1.106

阅读全文

与jstatd端口相关的资料

热点内容
网络中常用的传输介质 浏览:518
文件如何使用 浏览:322
同步推密码找回 浏览:865
乐高怎么才能用电脑编程序 浏览:65
本机qq文件为什么找不到 浏览:264
安卓qq空间免升级 浏览:490
linux如何删除模块驱动程序 浏览:193
at89c51c程序 浏览:329
怎么创建word大纲文件 浏览:622
袅袅朗诵文件生成器 浏览:626
1054件文件是多少gb 浏览:371
高州禁养区内能养猪多少头的文件 浏览:927
win8ico文件 浏览:949
仁和数控怎么编程 浏览:381
项目文件夹图片 浏览:87
怎么在东芝电视安装app 浏览:954
plc显示数字怎么编程 浏览:439
如何辨别假网站 浏览:711
宽带用别人的账号密码 浏览:556
新app如何占有市场 浏览:42

友情链接