`
Mybeautiful
  • 浏览: 298380 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

jvisualvm结合jstatd进行远程监控

阅读更多

       jvisualvm是Jdk自带的,具体点,据说是jdk1.6-07后加到jdk中的。本地监控很简单,在JAVA_HOME/bin中打开jvisualvm即可,所有本机的java程序会自动列出来。我们来说下远程监控的问题。

       当然网上有很多相关资料,我就把我实践的结果列出来吧。

              环境, 本地: WIN-XP sp3, jdk1.6.0_17 远端:CentOS5.1, jdk1.6.0_3

     

      具体步骤如下,

       1. 启动远端jstatd.

           1.1 配置[b]java[/b]安全访问,将如下的代码存为文件 jstatd.all.policy (名字随便起),但要放到JAVA_HOME/bin中,其内容如下,

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

           1.2 进入到JAVA_HOME/bin中,执行./jstatd -J-Djava.security.policy=jstatd.all.policy 

       注:这时候能启动正常,但是后面本地用 jvisualvm的时候抛异常,

java.net.ConnectException: Connection refused: connect
	at java.net.PlainSocketImpl.socketConnect(Native Method)
	at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
	at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
	at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
	at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
	at java.net.Socket.connect(Socket.java:519)
	at java.net.Socket.connect(Socket.java:469)
	at java.net.Socket.<init>(Socket.java:366)
	at java.net.Socket.<init>(Socket.java:180)
	at sun.rmi.transport.proxy.RMIDirectSocketFactory.createSocket(RMIDirectSocketFactory.java:22)
	at sun.rmi.transport.proxy.RMIMasterSocketFactory.createSocket(RMIMasterSocketFactory.java:128)
	at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:595)
Caused: java.rmi.ConnectException: Connection refused to host: 127.0.0.1; nested exception is: 
	java.net.ConnectException: Connection refused: connect
	at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:601)
	at sun.rmi.transport.tcp.TCPChannel.createConnection(TCPChannel.java:198)
	at sun.rmi.transport.tcp.TCPChannel.newConnection(TCPChannel.java:184)
	at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:110)
	at java.rmi.server.RemoteObjectInvocationHandler.invokeRemoteMethod(RemoteObjectInvocationHandler.java:178)
	at java.rmi.server.RemoteObjectInvocationHandler.invoke(RemoteObjectInvocationHandler.java:132)
	at $Proxy7.activeVms(Unknown Source)
	at sun.jvmstat.perfdata.monitor.protocol.rmi.RemoteVmManager.activeVms(RemoteVmManager.java:82)
Caused: sun.jvmstat.monitor.MonitorException: Error communicating with remote host: Connection refused to host: 127.0.0.1; nested exception is: 
	java.net.ConnectException: Connection refused: connect
	at sun.jvmstat.perfdata.monitor.protocol.rmi.RemoteVmManager.activeVms(RemoteVmManager.java:85)
	at sun.jvmstat.perfdata.monitor.protocol.rmi.MonitoredHostProvider.activeVms(MonitoredHostProvider.java:217)
	at com.sun.tools.visualvm.jvmstat.application.JvmstatApplicationProvider.processNewHost(JvmstatApplicationProvider.java:126)
	at com.sun.tools.visualvm.jvmstat.application.JvmstatApplicationProvider.access$000(JvmstatApplicationProvider.java:69)
	at com.sun.tools.visualvm.jvmstat.application.JvmstatApplicationProvider$5$1.run(JvmstatApplicationProvider.java:276)
	at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:572)
[catch] at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:997)
==>

 

        据查,有两种方法解决,一种是把 /etc/hosts中的ip改成实际的IP,然后重启网络,但我用此法没有解决问题。另一种是,在jstatd后加hostname的参数,如下,

       ./jstatd -J-Djava.security.policy=jstatd.all.policy -J-Djava.rmi.server.hostname=192.168.0.23

       我用第二种方法解决了此问题。

 

        2.打开本地的jvisualvm, 右键Remort,选择 "Add Remort Host...",在弹出框中输入你的远端IP,比如192.168.0.23. 连接成功后如图,


 
    其中CPU一项显示"NOT supported for this JVM",不知何故,难道是远端的jdk版本需要升级到jdk1.6.0_17? 还没有试。 另外“Perform GC”跟"Heap Dump"都亮,也不知何故。

 

     顺便解释下Heap跟PermGen的区别, 一般而言,PerGen放的是类的定义;而Heap里面放的是类的实例;所以一般程序稳定运行后,PermGen基本保持不变,要变也只会增加,因为GC只会扫描heap中的实例;而Heap变化较大,OutOfMemory一般也是Heap不够了。

  • 大小: 54.9 KB
0
0
分享到:
评论
2 楼 Mybeautiful 2012-02-24  
ltesting321 写道
楼主,我也遇到了CPU显示为"NOT supported for this JVM",现在也不知道怎么弄了,请问楼主解决了这个问题吗?

对不起,还没有解决. 要是解决了,分享一下啊。
1 楼 ltesting321 2012-02-24  
楼主,我也遇到了CPU显示为"NOT supported for this JVM",现在也不知道怎么弄了,请问楼主解决了这个问题吗?

相关推荐

    jvisualvm远程访问Linux环境中tomcat

    jvisualvm 远程访问 Linux ...使用 jvisualvm 远程访问 Linux 环境中的 Tomcat 需要安装和配置 jdk 和 Tomcat,然后使用 jvisualvm 的 JMX 方法或 jstatd 方法进行监控,最后添加 Visual GC 插件以获取更多的监控信息。

    jvisualvm操作手册for linux菜鸟

    jvisualvm是一款功能强大的Java虚拟机(JVM)监控工具,由Oracle提供,自JDK 6 update 7起,jvisualvm.exe文件包含在JDK的bin目录下。jvisualvm是NetBeans的profile子项目,可以监控线程、内存情况、查看方法的CPU...

    BTrace监控远程服务器使用实例

    BTrace 是一个强大的、安全的、动态的Java应用程序诊断工具,它允许开发者在运行时对Java应用进行细粒度的监控和性能分析。BTrace利用了Java的动态代理机制(Java Agent)和ASM字节码库,能够在不中断程序运行的情况...

    Java自带的性能监控工具使用简介

    VisualVM 可以远程监控 JVM,需要在远程机器上启动 jstatd 守护进程, 并在本地机器上使用 VisualVM 连接到远程机器。 使用 VisualVM 可以: * 监控 JVM 的性能,包括堆内存、线程、类加载等信息 * 进行线程 dump ...

    Tomcat启动参数及监控参数配置

    三、jVisualVM监控Tomcat jVisualVM是Java SDK自带的一款强大的多合一Java应用性能分析工具,可以用来监控Tomcat: 1. **连接Tomcat**: - 启动jVisualVM,选择"Remote",输入Tomcat的JMX连接信息,包括主机名、...

    JVM性能监控方法之visualVM1

    通过VisualVM,用户能够轻松监控本地或远程Java应用程序的CPU使用率、内存消耗情况、线程分析、堆外内存使用情况等关键指标,并支持查看JVM配置参数以及进行简单的GC日志分析。 #### 三、VisualVM的安装与启动 由于...

    jstatd-client:jstatdJStatRemoteHost的RMI客户端

    通过RMI,开发者可以在不中断服务的情况下进行远程监控,提高问题定位的效率。 【文件列表解析】 "jstatd-client-master"可能是一个包含jstatd客户端源代码的项目仓库。开发者可以通过查阅这个项目的源码,学习如何...

    ejstatd一个增强型的jstatd

    jstatd启动后会打开两个端口,其中一个端口可通过参数“-p”指定,如果不指定默认为1099,另一个是一个随机端口,不能参数指定。在防火墙环境使用不便,ejstatd是jstatd的增强版本,可指定端口,方便防火墙环境中...

    java开发中如何使用JVisualVM进行性能分析

    这使得监控过程变得极其便捷,只要目标应用和JVisualVM运行在相同的JDK环境下,就能进行实时监测。 要监控本地机器上的程序,JVisualVM可以直接检测到。而对于远程机器上的程序,需要在JVM启动时添加特定参数,例如...

    jvm监控工具介绍

    jstatd是JVM监控服务,它基于RMI(Remote Method Invocation)技术,允许远程机器获取本地JVM应用的信息。默认监听1099端口。在启用jstatd时,可能需要配置安全策略文件(如`jstatd.all.policy`),赋予必要的权限...

    大数据分析架构师顶级培训课程 storm课件 如何通过JMX监控Storm 共6页.pdf

    - 使用`jconsole`工具进行远程监控。在Windows系统的命令行中,进入JDK的`bin`目录并执行`jconsole.exe`启动`jconsole`控制台。 - 在`jconsole`中选择“远程连接”,输入远程进程地址(格式为主机名:端口,其中端口...

    Java VisualVM监控远程JVM(详解)

    使用 VisualVM 进行远程监控是一种成本较低且效率较高的监控方式,它对于资源消耗的监控相对较低,比其他一些专门的监控工具更为轻便。这种监控方式特别适合对 Java 应用进行实时监控和性能分析。不过在生产环境中,...

    JVM监控工具介绍jstack_jconsole_jinfo_jmap_jdb_jstat

    jstatd是一个基于RMI的应用程序,向远程机器提供本机JVM应用程序的信息。jstatd需要设置安全策略文件,以便其能够进行网络操作。jstatd的默认端口是1099。 这五种JVM监控工具可以帮助开发者和运维人员更好地了解...

    VisualVM使用方法

    在进行Tomcat远程监控时,需要在远程服务器上配置Java管理扩展(JMX),这涉及到在启动Java应用时添加特定的JVM参数来开启JMX远程连接。例如,需要设置JMX远程连接的端口号、是否启用SSL连接、是否启用用户鉴权等。...

    JVM监控管理及故障诊断工具(常用命令)

    JVM 监控管理及故障诊断工具 ...jps、jstat 和 jstatd 三种命令都是 JVM 监控管理及故障诊断的重要工具,它们可以帮助开发者快速地了解 JVM 的性能和资源消耗情况,从而进行合理的资源分配和性能优化。

    JVM-Tunning-Tools-Introduction

    1. jstatd:是一个监控服务,它在目标机器上创建一个RMI(远程方法调用)注册表,并使用这个注册表来监听JVM进程的创建和终止。其他工具如jvisualvm可通过它来远程连接并监控JVM进程。 2. jps:用于显示在本地或...

    JVM监控工具介绍.docx

    在进行JVM监控时,可以根据具体需求选择合适的工具。例如,如果需要快速定位内存泄漏,可以使用`jmap -histo` 或者结合`jstat -gc` 和`jmap -heap`。如果关心线程状态,`jstack` 是首选。对于整体性能的可视化监控,...

    Java内存泄露_JVM监控工具介绍

    jstatd命令可以帮助开发者快速地监控远程机器的Java应用程序的信息,从而快速定位问题所在。 Java提供了多种工具和命令来帮助开发者快速地检测和解决Java内存泄露问题。本文介绍的工具和命令可以帮助开发者快速地...

    idea使用jvm2222222222222222222

    关于远程JVM监控,Jstatd是一个Java服务,可以用来监控远程JVM的统计信息。配置`jstatd.all.policy`文件后,可以通过指定的hostname和端口启动jstatd服务,允许远程连接。例如,`jstatd -J-Djava.security.policy=...

    JVM监控工具介绍jstack, jconsole, jinfo, jmap, jdb, jstat.doc

    - **jstatd**:启动一个基于RMI的JVM监控服务,允许远程监控JVM状态。需要注意的是,为了安全考虑,使用`jstatd`需正确配置安全策略文件。 ### 结论 上述工具共同构成了Java开发者和运维人员的有力武器库,帮助...

Global site tag (gtag.js) - Google Analytics