- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试分析远程 Java 应用程序,实际上它是一个游戏服务器。它在我的本地计算机(带有 JDK1.7.0_02 x64 的 Windows XP x64)上正常工作,但在生产服务器(带有 JDK1.7.0_03 i586 的 CentOS)上表现非常奇怪。
我进行了大量搜索,发现我应该使用 VisualVM 来完成这项任务。所以 VisualVM 在本地机器上运行良好,但在本地机器上没有挂起,我需要在生产环境中使用真实负载进行分析。我在远程机器上用参数启动了 jstatd
jstatd -J-Djava.security.policy=jstatd.all.policy -J-Djava.rmi.server.logCalls=false &
使用策略文件
grant codebase "file:/usr/java/jdk1.7.0_02/lib/tools.jar" {
permission java.security.AllPermission;
};
然后我就这样开始了我的java应用
java -server -Dcom.sun.management.jmxremote\
-Dcom.sun.management.jmxremote.port=4000\
-Dcom.sun.management.jmxremote.ssl=false\
-Dcom.sun.management.jmxremote.authenticate=false\
-jar /home/pinballSocketServer/pinballSocketServer.jar
应用程序和 jstatd 都以 root 权限启动。
并且 VisualVM 无法连接到远程主机。但是在远程主机上,当 VisualVM 正在运行并添加了远程主机时,我看到了以下日志:
Feb 16, 2012 7:11:52 PM sun.rmi.server.UnicastServerRef logCall
FINER: RMI TCP Connection(3)-217.16.27.195: [217.16.27.195: sun.rmi.registry.RegistryImpl[0:0:0, 0]: java.rmi.Remote lookup(java.lang.String)]
Feb 16, 2012 7:11:56 PM sun.rmi.server.UnicastServerRef logCall
FINER: RMI TCP Connection(3)-217.16.27.195: [217.16.27.195: sun.rmi.registry.RegistryImpl[0:0:0, 0]: java.rmi.Remote lookup(java.lang.String)]
Feb 16, 2012 7:12:00 PM sun.rmi.server.UnicastServerRef logCall
FINER: RMI TCP Connection(3)-217.16.27.195: [217.16.27.195: sun.rmi.registry.RegistryImpl[0:0:0, 0]: java.rmi.Remote lookup(java.lang.String)]
Feb 16, 2012 7:12:04 PM sun.rmi.server.UnicastServerRef logCall
FINER: RMI TCP Connection(3)-217.16.27.195: [217.16.27.195: sun.rmi.registry.RegistryImpl[0:0:0, 0]: java.rmi.Remote lookup(java.lang.String)]
进一步谷歌搜索后,我发现我需要使用 ssh 隧道。我通过以下方式配置了腻子
http://www.advancedigital.ru/show/putty_config.jpg
和 VisualVM 一样
http://www.advancedigital.ru/show/visualvm_config.jpg
VisualVM 上方的 Adter 操作连接到远程主机,但我只能看到线程摘要图表并且分析器处于非事件状态。
我看到一些建议,两台机器上的 jvms 应该相似并且具有相同的平台(x86 或 x64),但我已经尝试从另一台机器(带有 JDK1.7.0_03 x86 的 Windows 7 x86)进行分析,并且有相同的结果。
我也试过这个,但还是得到了同样的结果。 VisualVM over ssh
我怎样才能让这个分析工作?
最佳答案
即使已经回答了这个问题,我还是设法做到了,所以我将添加我的方法:
我使用了以下来源:
https://bowerstudios.com/node/731
我在 Windows 中使用具有 ssh 命令的 git bash 完成了此操作。您也可以使用 cygwin 或纯 minggw。
1) 在命令提示符下运行 ssh tunnel 命令(我在 git bash/MINGGW32 中执行此操作)。
ssh -D 9010 -p 22 root@IP -v
2) 使用 JMX 选项在服务器上运行您的应用程序(一个衬里)
java -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9010
-Dcom.sun.management.jmxremote.local.only=false
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false -jar application.jar
3)通过socks代理运行visualVM进行连接(一个liner)
visualvm -J-Dnetbeans.system_socks_proxy=localhost:9010
-J-Djava.net.useSystemProxies=true
4) 在visualVM中实际添加你的JMX远程连接
也可用:http://maythesource.com/2013/12/04/connecting-to-jmx-from-visualvm-using-ssh-tunnel/ (随着时间的推移会更新更多信息)。
关于jmx - VisualVM over Putty SSH 隧道,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9314092/
使用 VisaulVM,我想将其作为数据获取,而不应用图像处理算法......我该怎么做?我认为这不会来自快照。 我不确定 VisualVM 和 jVisualVM 有何不同,命名肯定令人困惑,但我正
我正在从 VisualVM 1.3.2 迁移到 1.3.3,并希望将我设置的所有远程服务器和应用程序迁移到这个新安装。 我查看了 %HOMEPATH%\Application Data.visualv
我的查询结果有数百万行。我已经修改了visualvm.conf -J-DOQLController.limitResults=1000000 目前,作为一种解决方法,我运行查询,然后将结果复制并粘贴到
我正在运行 JDK 1.8.0_66 JVisualVM 实用程序,并希望使用 MBeans 浏览器来监视我的 Coherence 应用程序。 根据Oracle教程,我必须首先安装MBeans插件。所
我的查询结果有数百万行。我已经修改了visualvm.conf -J-DOQLController.limitResults=1000000 目前,作为一种解决方法,我运行查询,然后将结果复制并粘贴到
我正在使用 VisualVM 来监控许多 JAVA 应用程序,我想安装一些在这个应用程序中可用的插件。不幸的是,“可用插件”选项对我自己不起作用,因为我相信我可能被阻止了通过公司代理。 我可以如何以及
我在使用“Java VisualVM”时遇到了一些麻烦,它似乎是 Oracle 品牌的,而且关于我正在运行版本 1.6.0_51 的页面声明的丑陋之处。 特别是让我失望的一件事是,我一直在运行这个非常
如果我使用适用于 Java8 的 AdoptOpenJDK HotSpot 构建,我可以使用 VisualVM 监控应用程序。 如果我使用 OpenJ9 版本,VisualVM 会显示错误“无法检测到
我可以附加到 surefire 进程,但尝试分析它显示采样: CPU sampling: Not available. Failed to create JMX connection to targe
在我的项目中,我们使用一个小型的 Java 分析工具。它显示了我们的应用程序加载到内存中的所有对象,并实时反射(reflect)了对象的变化。我们主要用它来调试。 我的问题是:它如何运作?外部应用程序
我在 visualvm v1.3.8 中找到所需的对象: filter(heap.objects("java.lang.String"), "/hibernate\\.ejb\\.naming/(it
我正在尝试为 VisualVM 安装一些插件,但它一直卡在下面的屏幕上 - 告诉我“请等待安装程序发现插件依赖项”。我运行的是 Ubuntu 12.04。当我尝试从“可用插件”列表中安装它们时,以及当
我正在尝试为 VisualVM 安装一些插件,但它一直卡在下面的屏幕上 - 告诉我“请等待安装程序发现插件依赖项”。我正在运行 Ubuntu 12.04。当我尝试从“可用插件”列表安装它们时,以及当我
我正在使用 VisualVM(内置于 JDK1.6)来分析我的 Java 应用程序以查找内存泄漏。我正在使用堆转储和探查器(内存监视器)这两个 VisualVM 功能...有一些不一致之处,我无法理解
我正在使用 VisualVM 来分析 javafx 8 应用程序,该应用程序执行一些绘图操作,并且使用的内存比我想要的多得多。它似乎没有泄漏,但由于某种原因,我的总堆永远不会减少,即使当我选择不同的文
正在监视 Java 应用程序的线程锁定情况, 在 visualvm 的监控标签下, Activity 线程:112Live Peak:126守护线程:99开始总数:135,742 这是什么意思?我觉得
这似乎是一个荒谬的问题。在 google 上搜索 VisualVM 会得到很多信息,包括据称很容易连接到正在运行的 JVM 和监视器。 嗯,事实并非如此。我不知道如何将 VisualVM 连接到我正在
我正在尝试分析一个应用程序,我有很多类型为 sim.core.EndPoint$2 的实例 当我检查这些实例时,我确认它们不是 sim.core.EndPoint 类型,它们似乎是一个 EndPoin
今天我对得到的 Visual VM 分析结果感到困惑。 我有以下简单的Java方法: public class Encoder { ... private BitString encode(I
我已将tomcat(已分配8GB堆内存)连接到visualvm。在 VisualVM 中,在“采样器”->“内存”选项卡下,分配的总内存显示为 17GB(18470717672 字节)。但只分配了8G
我是一名优秀的程序员,十分优秀!