星空网 > 软件开发 > Java

jvisualvm 远程连接jboss

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

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

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

jvisualvm 远程连接jboss

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

创建安全策略文件,并命名为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注册源码 发现有这么一行代码:

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

这代码是获取本地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表示正整数。

jvisualvm 远程连接jboss 

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

jvisualvm 远程连接jboss

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

jvisualvm 远程连接jboss

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

jvisualvm 远程连接jboss

终于 能通过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

关键词:

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

独立站内容营销这么做,轻松引流降成本 | 运营干货:https://www.kjdsnews.com/a/1666362.html
亚马逊品牌聚合商Thrasio准备申请破产:https://www.kjdsnews.com/a/1666363.html
在 TIKTOK 和 INSTAGRAM 上代发货产品的终极指南:https://www.kjdsnews.com/a/1666364.html
好消息!亚马逊欧洲本土店铺二审自动恢复:https://www.kjdsnews.com/a/1666365.html
亚马逊应对流量大战激烈,订单降三成引发关注:https://www.kjdsnews.com/a/1666366.html
亚马逊新规定,以下9种电动交通设备上架需进行售前审核:https://www.kjdsnews.com/a/1666367.html
2024年如何找到在TikTok上发帖的最佳时间:https://www.kjdsnews.com/a/1836408.html
旅游互联时代的商机与挑战(详细剖析行业现状与前景):https://www.vstour.cn/a/363175.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流