ColdFusion监视器非常适合有关服务器本身的详细信息,但它在JVM方面非常有限。
在开发和测试应用程序和功能的性能/内存占用时,如何实现Java Mission Control或类似的JVM监视解决方案来监视运行ColdFusion的JVM?
请注意,我正在问这个问题,以及社区知识"并已经知道答案,但随时可以提供有关其他监控解决方案的任何花絮。
答案 0 :(得分:11)
任务控制曾经在JRockit JDK中捆绑,就像它自己的实用程序一样。 Hotspot和JRockit是两个完全不同的JVM,它们有自己的JDK / JRE。默认情况下,ColdFusion使用HotSpot JVM。 JRockit基本上已经从新开发中解散,其中一些功能被合并到HotSpot中。
Java Mission Control可免费用于开发目的。
开始使用,下载最新的1.8 JDK。我的首选是卸载此时安装的所有其他64位JDK和JRE。
可能不需要此步骤。更改环境变量以更新JAVA主页。
一个。右键单击“我的电脑” - > “属性” - > “高级” - > “环境变量”
湾将JAVA_HOME和任何其他JAVA变量更改为新路径
调整你的jvm.config
一个。制作C:\ ColdFusion1x \ cfusion \ bin \ jvm.config的.bak副本
湾将以下行添加到jvm.config
-XX:+ UnlockCommercialFeatures
-XX:+ FlightRecorder
-Dcom.sun.management.jmxremote.autodiscovery =真
-Dcom.sun.management.jdp.name = ColdFusion10
-Dcom.sun.management.jmxremote.authenticate =假
-Dcom.sun.management.jmxremote.port = 7091
-Dcom.sun.management.jmxremote.ssl =假
使用管理员权限打开C:\ program files \ java \ jdk1.8 _ ** \ lib \ missioncontrol \ configuration \ org.eclipse.equinox.simpleconfigurator \ bundles.info文件,并删除以...开头的四行以下文字:
org.eclipse.equinox.log.nl_ja
org.eclipse.equinox.log.nl_zh
org.eclipse.equinox.supplement.nl_ja
org.eclipse.equinox.supplement.nl_zh
编辑C:\ program files \ java \ jdk1.8_xx \ lib \ missioncontrol \ configuration \ config.ini,并添加以下行:eclipse.home.location = $ osgi.install.area $ < / p>
启动:C:\ program files \ java \ jdk_1.8.0 _ ** \ bin \ jmc 请注意,当您的ColdFusion实例与您使用ColdFusion更新程序安装的最新Hotspot版本一起运行时,JMC将从1.8启动。
您可以从帮助中安装插件 - &gt;安装新软件。插件网站应该已经存在。这将为您提供堆转储的内存分析。它不如JRockit内存分析器好,但它总比没有好。
如果您将ColdFusion作为Windows服务运行,则需要打开services.msc并关闭ColdFusion Application Server。然后打开C:\ ColdFusion10 \ cfusion \ bin \ cfstart.bat以将Tomcat和ColdFusion作为前台应用程序启动。当作为Windows服务运行时,jOverflow插件将无法运行。
你会看到你的JVM出现在Java Mission Control中,我的是调用-Xdebug,因为我猜它没有名字,并从第一个选项开始。
右键单击ColdFusion JVM并选择“启动JMX控制台”。您将在右侧看到如下所示的内容:
https://www.youtube.com/watch?v=WMEpRUgp9Y4
http://www.ghidinelli.com/2009/07/16/finding-memory-leaks-coldfusion-jvm
http://www.oracle.com/technetwork/java/javase/jmc53-release-notes-2157171.html(请参阅“已知问题”部分)