由于项目中使用jboss 作为web容器,每当项目上线时需要使用loadrunner对项目进行性能压测,这时就需要实时观察JVM的一些参数。想使用jvisualvm借助jstatd远程连接服务器上面的JVM时一直不能成功

在网上找了好些资料都始终没有成功,最终通过阅读jdk的相关源码终于使得jvisualvm借助jstatd能远程连接jboss。特写这篇博文记录解决问题过程。

当在命令中输入 jstatd时会出现如下错误:

找网上找许多资料对该错误的解决如下,实际上按照这样进行操作依然没有解决该错误。

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

通过阅读Jstatd的源码发现引起该错误的原因是为在该类的第139行调用了

System.setProperty("java.rmi.server.ignoreSubClasses", "true");

根据java安全沙盒机制,需要在jstatd.all.policy配置文件中添加如下内容:

grant {
  permission java.util.PropertyPermission "java.rmi.server.ignoreSubClasses","write";

};

所以完整的 jstatd.all.policy 配置文件如下

grant codebase "file:${java.home}/../lib/tools.jar" {
permission java.security.AllPermission;
}; grant {
permission java.util.PropertyPermission "java.rmi.server.ignoreSubClasses","write"; };

当解决上面的问题后,通过jvisualvm远程连接服务器上的jstatd一直连接不上。通过阅读jdk的rmi注册源码 发现有这么一行代码:

  try {
host = java.net.InetAddress.getLocalHost().getHostAddress();
} catch (Exception e) {
// If that failed, at least try "" (localhost) anyway...
host = "";
}

这代码是获取本地IP地址。如果不在本机host文件中添加本机机器名对应的IP 则这行代码将返回127.0.0.1 这也导致了jvisualvm无法远程连接jstatd。

下面是完整的步骤

进入到jdk安装目录下,在/usr/java/jdk1.6.0_45/jre/lib/security 下创建jstatd.all.policy文件,文件的内容如下:

grant codebase "file:${java.home}/../lib/tools.jar" {
permission java.security.AllPermission;
}; grant {
permission java.util.PropertyPermission "java.rmi.server.ignoreSubClasses","write"; };

编辑/usr/java/jdk1.6.0_45/jre/lib/security路径下面的java.security文件 policy.url.3=file:${java.home}/lib/security/jstatd.all.policy 如果 policy.url.3已经存在

可以使用 policy.url.n  n表示正整数。

 

编辑host文件中,添加对机器名称<---> ip映射

完成上面两步骤后,运行jstatd参数,因为没有指定端口,rmi默认注册使用的端口是1099 查看jstatd是否已经成功运行

出现了上面的截图,表示jstatd已经成功运行。关闭linux的防火墙。后在本机尝试使用jvisualvm远程连接jstatd。

终于 能通过jvisualvm 远程连接jboss,但是jvisualvm 中无法察看cpu和显示线程选项卡,后面还要进一步解决这个问题。

远程服务器使用的jdk的版本:

Java(TM) SE Runtime Environment (build 1.6.0_45-b06)
Java HotSpot(TM) Client VM (build 20.45-b01, mixed mode, sharing)

远程服务器使用的jboss版本为:

jboss-eap-6.3

jvisualvm 远程连接jboss的更多相关文章

  1. jvisualvm远程连接

    1. 今天用jvisualvm远程连接linux上的jdk,jxm方式没有连接成功,后来发现是tomcat安装目录bin下的catalina.sh文件下的JAVA_OPTS中内容格式不对,要有空格,修 ...

  2. JConsole/JvisualVM 远程连接失败处理

    今天在使用JConsole进行远程连接时,发现IP和端口在Windows下是可以远程telnet的,但是,使用JConsole时却无法连接. 我的环境如下: Windows下运行JConsole,准备 ...

  3. jconsole & jvisualvm远程监视websphere服务器JVM的配置案

    jconsole是JDK里自带的一个工具,可以监测Java程序运行时所有对象的申请.释放等动作,将内存管理的所有信息进行统计.分析.可视化.我们可以根据这些信息判断程序是否有内存泄漏问题. 使用jco ...

  4. JConsole & JVisualVM远程监视Websphere服务器JVM的配置方法

    原文链接:http://xjsunjie.blog.51cto.com/999372/1331880/ jconsole是JDK里自带的一个工具,可以监测Java程序运行时所有对象的申请.释放等动作, ...

  5. JVisualVM远程监控

    本文主要转自:http://blog.iamzsx.me/show.html?id=394002 http://www.wl566.com/wz/64022.html 1. 通过JMX方式监控远程li ...

  6. jvisualvm远程监控服务器tomcat

    1.在 {服务器tomcat路径}/bin/catalina.sh 中,的[# OS specific support.  $var _must_ be set to either true or f ...

  7. 3 - JVM随笔分类(gc.log ,VisualVM插件介绍,VisualVM远程连接方式介绍)

    gc.log 354.2 KB 对于对应用的监控上可以使用Jdk自带的VisualVM来做可视化监控,可以查看当前服务应用进程的堆大小的走向,以及类的加载数量等,除此之外,VisualVM可以支持很多 ...

  8. 使用jvisualvm远程监控tomcat(阿里云ECS)

    写在前面:  使用jvisualvm远程监控tomcat(阿里云ECS),连接是报错:service:jmx:rmi:////jndi/rmi:IP:端口//  连接到 IP:端口,网上找了很多资料, ...

  9. MSSQL远程连接

    背景:部署公司自己研发的ERP系统. 1)系统架构: .NET+MSSQL. 2)服务器系统:Windows Server 2008 R2 Enterprise 3)数据库:MSSQL Server ...

随机推荐

  1. php开启压缩gzip

    php服务的开启压缩,节省带宽 看是否开启压缩的网站 http://www.cnblogs.com/GaZeon/p/5421906.html 找到php.ini,修改下面的 ,重启php-fpm z ...

  2. bzoj 1053

    代码: //本题要求不超过n的因子最多的最小的数,我们知道因子的个数可以有素因子的指数得出,题目限制n是2e9,我们可以排除掉一些情况然后暴力 //对于一个数必然是因子越小他的因子数越多,所以枚举最小 ...

  3. IOS性能调优系列:使用Time Profiler发现性能瓶颈

    硬广:<IOS性能调优系列>第五篇,预计会有二十多篇,持续更新,欢迎关注. 之前四篇都是关注于内存方面,分析了内存泄漏.僵尸对象.内存分配,本篇介绍Time Profiler工具的使用,开 ...

  4. Rabbitmq--topic

    一.前言 前面讲到direct类型的Exchange路由规则是完全匹配binding key与routing key,但这种严格的匹配方式在很多情况下不能满足实际业务需求.topic类型的Exchan ...

  5. [吴恩达机器学习笔记]11机器学习系统设计3-4/查全率/查准率/F1分数

    11. 机器学习系统的设计 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考资料 斯坦福大学 2014 机器学习教程中文笔记 by 黄海广 11.3 偏斜类的误差度量 Error Metr ...

  6. CentOS7,安装Tomcat8.5、JDK1.8,并设置开机启动(Linux CentOS Tomcat、JDK+Tomcat、Tomcat开机自启动)

    1.下载JDK1.8.Tomcat8 http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.ht ...

  7. [洛谷P3293] [SCOI2016]美味

    洛谷题目链接:[SCOI2016]美味 题目描述 一家餐厅有 n 道菜,编号 1...n ,大家对第 i 道菜的评价值为 ai(1<=i<=n).有 m 位顾客,第 i 位顾客的期望值为 ...

  8. H5多媒体

    Video <video width="500px" controls="controls"> <source src="test. ...

  9. 51nod1471 小S的兴趣

    题目来源: CodeForces 基准时间限制:1.5 秒 空间限制:131072 KB 分值: 320 小S喜欢有趣的事.但是,每个人的兴趣都是独特的.小S热衷于自问自答.有一天,小S想出了一个问题 ...

  10. spring mvc convention over configuration 之 RequestToViewNameTranslator

    1. RequestToViewNameTranslator简介 在springmvc中很多地方都是约定优于配置的,比如这种写法: @Controller public class IndexActi ...