Tag: jmx

远程jvisualvm会话不支持CPU和分析

在监视远程应用程序时(使用jstatd)我既不能分析也不能监视CPU消耗。 堆监控(假设我不使用G1)有效。 jvisualvm提供消息“此JVM不支持”。 在CPU图形窗口中。 我的设置中是否有任何遗漏? 谷歌显示的结果很少。 本地环境(Mac OS X 10.6): java version “1.6.0_15” Java(TM) SE Runtime Environment (build 1.6.0_15-b03-219) Java HotSpot(TM) 64-Bit Server VM (build 14.1-b02-90, mixed mode) 远程环境(Linux版本2.6.16.27-0.9-smp(gcc版本4.1.0(SUSE Linux))): java version “1.6.0_16” Java(TM) SE Runtime Environment (build 1.6.0_16-b01) Java HotSpot(TM) 64-Bit Server VM (build 14.2-b01, mixed mode) 本地监控按照广告宣传。

在生产服务器上启用jmx(lambda探针)是个好主意吗?

我们在Sun VM 1.5.0_06-b05上运行的Tomcat 5.5.17上部署的Web应用程序出现了一些减速,我们的托管公司没有提供足够的数据来查找问题。 我们正在考虑在生产服务器上安装lambda探针 ,但它需要启用JMX(com.sun.management.jmxremote)才能获取内存和CPU统计信息。 启用JMX会导致严重的性能损失吗? 如果我们启用JMX,我们是否会打开任何安全漏洞? 如果我们只启用对JMX的本地访问,是否需要设置安全身份validation? 是否有人使用相同的(tomcat + lambda探针)在生产中没有问题? UPDATE 看看答案似乎单独启用JMX不会给VM带来很大的开销。 如果附加到VM的监视应用程序(无论是JConsole , lambda探测器还是其他任何程序)正在以过度的奉献精神进行轮询,则可能会产生额外的工作。

获取服务器地址和应用程序名称

环境:NetBeans 6.9.1,GlassFish 3.1 我有一个Java Web应用程序。 如何动态获取服务器地址和应用程序名称? ‘2in1’解决方案对我来说是最好的: http://localhost:8080/AppName/ 。 有没有实用的方法来获取这些信息? 假设AppName的值将被修复,所以我只需要主机地址。 是否可以通过JMX检索它? 还有其他方法吗?

访问远程MBean服务器

我正在使用JBoss运行客户端/服务器应用程序。 如何连接到服务器JVM的MBeanServer? 我想使用MemoryMX MBean来跟踪内存消耗。 我可以使用JNDI查找连接到JBoss MBeanServer,但java.lang.MemoryMX MBean未向JBoss MBeanServer注册。 编辑:要求从客户端以编程方式访问内存使用情况。

如何使用JMX连接到在EC2上运行的Java实例

我们在连接到在Amazon的EC2集群中运行的Java应用程序时遇到问题。 我们肯定允许“JMX端口”(通常是RMI注册表端口) 和服务器端口(完成大部分工作)到相关实例的安全组。 Jconsole连接但似乎挂起并且从不显示任何信息。 我们正在运行我们的java,如下所示: java -server -jar foo.jar other parameters here > java.log 2>&1 我们尝试过: Telnet到端口连接但不显示任何信息。 我们可以使用remote-X11 over ssh在实例上运行jconsole ,它连接并显示信息。 所以JRE在本地导出它。 打开安全组中的所有端口。 Weeee。 使用tcpdump确保流量不会转到其他端口。 在本地模拟它。 我们总是可以使用相同的应用程序参数连接到我们的本地JRE或在我们网络上其他地方运行的JRE。 java -version输出: OpenJDK Runtime Environment (IcedTea6 1.11.5) (amazon-53.1.11.5.47.amzn1-x86_64) OpenJDK 64-Bit Server VM (build 20.0-b12, mixed mode) 另外,我们使用的是Simple JMX软件包,它允许我们设置RMI注册表和服务器端口,这些端口通常由RMI注册表半随机选择。 您还可以使用以下JMX URI强制执行此操作: service:jmx:rmi://localhost:” + serverPort + “/jndi/rmi://:” + registryPort + […]

Tomcat 6,JMX和动态端口问题

在阅读并尝试了很多之后,我不得不问是否有人能解决我的问题。 我试图在防火墙后面设置一些Tomcats(V6)。 这没什么大不了的 – 但我想通过JMX监控它们。 我阅读了TC文档并遇到了JMXRemoteLifecycleListener 。 我的测试TC安装完全按照上面的链接进行设置。 因此,我没有从我们网络中的一个主机到另一个主机的连接。 另外,每次启动TC时都会打开第三个随机端口。 在我的server.xml中,监听器被激活 catalina.out说一切都好。 2011-06-14 16:46:48,819 [main] INFO org.apache.catalina.mbeans.JmxRemoteLifecycleListener- The JMX Remote Listener has configured the registry on port 8050 and the server on port 8060 for the Platform server 端口是开放的,我可以通过telnet从任何其他主机连接到它们。 我可以在本地连接到vm( service:jmx:rmi://:8xxx/jndi/rmi://:8xxxx/jmxrmi ) Netstats输出如下: tcp6 0 0 :::8080 :::* LISTEN 11291/java tcp6 0 0 :::8050 :::* […]

JBoss AS 7 JMX控制台

我今天花了一些时间查看JBoss AS7 。 到目前为止我看到的东西给我留下了深刻印象,但我注意到好的’JMX-Console不再存在。 有谁知道为什么它被遗漏了? 我知道我可以通过JConsole,MC4J等进行连接,但有没有替代方案可以提供对已部署MBean的基于Web的访问?

Java 6是否为JMX远程连接打开了默认端口?

我的具体问题与JDK 1.6中使用的JMX有关:如果我使用JRE 1.6运行Java进程 com.sun.management.jmxremote 在命令行中,Java是否为远程JMX连接选择了一个默认端口? 背景故事:我目前正在尝试开发一个程序,让客户能够通过JMX从远程机器连接到我们的一个进程。 目标是实现对实时显示控制台上发生的情况的远程调试。 由于他们的服务级别协议,他们强烈有动力捕获尽可能多的数据,如果情况看起来太复杂,无法快速修复,重新启动显示控制台并允许它重新连接到服务器端。 我知道我可以在JDK 1.6进程上运行jconsole,在JDK 1.6.7进程上运行jvisualvm ,同时可以访问控制台。 但是,由于操作要求和涉及的人员问题,我们强烈要求远程获取我们需要的数据并重新启动和运行。 编辑:我知道命令行端口属性 com.sun.management.jmxremote.port=portNum 我想回答的问题是,如果你没有在命令行设置该属性,Java是否会选择另一个端口进行远程监控? 如果是这样,你怎么能确定它可能是什么?

无法将JCSsole与作为Windows服务运行的Tomcat一起使用

我正在运行tomcat 6.0.18作为Windows服务。 在服务小程序中,jvm配置为默认值,即它使用JRE的jvm.dll。 我试图用JConsole监视此应用程序,但无法在本地连接到它。 我添加了参数-Dcom.sun.management.jmxremote(在使用start.bat脚本启动tomcat时有效)。 但是jvm似乎没有拿起参数。

测量代码段的Java执行时间,内存使用和CPU负载

对于特定的Java代码段,我想测量: 执行时间(很可能是线程执行时间 ) 内存使用情况 CPU负载(特别是可归因于代码段) 我是相对Java的新手,并不熟悉如何实现这一点。 我已经被提到了JMX ,但是我不确定如何使用JMX,JMX看起来有点“重”我正在做什么。 理想情况下,我想要一些可以告诉我想测量的测量类,可以选择在代码段之前调用start()方法,然后调用stop()方法。 相关指标将记录到我指定的文件中。 例如: import com.example.metricLogger; metricLogger logger = new metricLogger(); logger.setLogPath(pathToLogFile); logger.monitor(executionTime); logger.monitor(memoryUsage); logger.monitor(cpuLoad); logger.start(); /* Code to be measured */ logger.stop(); 在Java中是否有任何标准/通用/传统方式来实现这一目标? 这些测量用于一次性性能比较,因此我不会寻找任何生产中的长期监测过程。 我很高兴被引用到教程或外部示例,并且不希望在这里得到完整答案。 也就是说,如果能够实现上述任何简单的事情,那么一个现实的例子就会非常顺利。