- 浏览: 299479 次
- 性别:
- 来自: 武汉
文章分类
最新评论
-
Mybeautiful:
袁光平 写道您好我设置了html格式,但是邮件中的超链接还是不 ...
JavaMail发送html格式的邮件 -
袁光平:
您好我设置了html格式,但是邮件中的超链接还是不能正常显示为 ...
JavaMail发送html格式的邮件 -
springmvc_springjpa:
java程序语言学习教程 地址http://www.zuida ...
Java学习这七年 -
月光照着我:
谢谢~~~
如何阅读源代码 -
nocb:
我还是建议博主,要把知识面放宽一些, 各种语音 和框架都了解一 ...
Java学习这七年
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不够了。
评论
对不起,还没有解决. 要是解决了,分享一下啊。
发表评论
-
网页抓取之新方法 (在java程序中使用jQuery)
2012-03-07 13:57 11687你想要的任何信息,基本上在互联网上存在了,问题是如 ... -
也说递归
2011-12-23 11:41 1409递归算法是程序员的最重要的基本功之一,也是相对 ... -
编码的依据是什么?
2011-09-21 15:11 1429编码的依据是什么?很多人也许是不假思索就回答“需求!” ... -
Visitor模式通俗化
2011-08-29 14:12 163823种设计模式中,最难理解的可能就是Visitor ... -
如何阅读源代码
2011-08-24 14:03 10748众所周知,要想 ... -
废话Log4j
2011-07-26 11:41 1513使用Log4j去管理日志多年了,基本每次都是按照前 ... -
使用POI操作Excel的代码
2011-06-20 09:18 2982经常会碰到把数据存到excel的需求,虽然使用POI写 ... -
使用Cobra解析html, 及其提取table内容的例子。
2011-04-07 09:40 2290以下方法读取一个html格式的String,然后把其中 ... -
MD5加密及随机数生成
2011-02-25 11:19 3793今天贴两个简单的方法,需要的时候不用自己再写, ... -
我不知道何谓动态绑定
2010-10-22 16:01 1274CSDN有一贴问何谓 ... -
得到当前系统中所有线程的办法
2010-09-27 11:15 1739有时候我们希望找到系统中的所有线程,有没有什么办法呢? ... -
从源头上捕获线程中产生的异常
2010-09-26 18:01 1323我们经常碰到线程突然死掉,但是又找不到原因,总不能在每 ... -
Java 读取本机IP地址
2010-08-19 12:35 1816今天要跟大家分享的是,一个读取本机ip地址的方法。 ... -
TCP实现P2P通信、TCP穿越NAT的方法、TCP打洞
2010-07-14 11:35 1615先看一下技术背景:Inte ... -
Quartz配置...
2010-06-18 08:58 1295关于cronExpression的介绍: 字段 允许值 允许 ... -
封装好的类,使用httpClient访问网页。
2010-06-10 13:13 2152做了好几个httpclient访问网站的项目了,我发布 ... -
使用Server转发的聊天程序 (短小精悍,无重复代码, 支持多客户端)
2010-05-05 10:51 3218Server 入口程序, 仅一个类,其中 hsCli ... -
论接口与抽象类的真正区别
2010-03-30 21:54 5345关于接口与抽象类的区别, 有着千篇一律的答案, ... -
Java学习之路拾遗
2010-01-30 13:12 1225学习最大的天敌就是忘记,所以我想把我这几年的学习的东西,一点一 ... -
Java学习之路(三)
2010-01-29 20:48 1128...
相关推荐
jvisualvm 远程访问 Linux ...使用 jvisualvm 远程访问 Linux 环境中的 Tomcat 需要安装和配置 jdk 和 Tomcat,然后使用 jvisualvm 的 JMX 方法或 jstatd 方法进行监控,最后添加 Visual GC 插件以获取更多的监控信息。
在使用VisualVM远程监控JVM之前,需要准备好测试环境。我们需要在服务器上配置jstatd守护程序,并在客户端使用VisualVM连接服务器监控Java程序。 ### 2.2 在服务器上配置 jstatd 的 security policy 文件 在服务器...
为了实现远程监控,你需要开启JVM的远程调试端口。这可以通过设置JVM参数 `-Dcom.sun.management.jmxremote`、`-Dcom.sun.management.jmxremote.port`、`-Dcom.sun.management.jmxremote.authenticate` 和 `-Dcom....
- 或者通过`jstatd`服务监听本地端口,允许远程jVisualVM连接。 2. **监控指标**: - **内存**:查看堆内存、非堆内存的使用情况,分析内存泄漏。 - **线程**:查看线程数量和状态,找出可能的死锁。 - **...
在远程服务器上启动Java应用程序时,可以通过添加特定的JMX参数来开启远程监控功能。例如,如下命令展示了如何配置JMX地址、端口等信息: ```sh nohup java -Xms512m -Xmx2048m -XX:PermSize=64m -XX:MaxPermSize...
这使得监控过程变得极其便捷,只要目标应用和JVisualVM运行在相同的JDK环境下,就能进行实时监测。 要监控本地机器上的程序,JVisualVM可以直接检测到。而对于远程机器上的程序,需要在JVM启动时添加特定参数,例如...
1. jstatd:是一个监控服务,它在目标机器上创建一个RMI(远程方法调用)注册表,并使用这个注册表来监听JVM进程的创建和终止。其他工具如jvisualvm可通过它来远程连接并监控JVM进程。 2. jps:用于显示在本地或...