标签: jmx

如何在Websphere中启用JMX?

我想使用JConsole来监视我的Websphere应用程序,但我不知道如何启用JMX.

java websphere jmx jconsole java-ee

30
推荐指数
4
解决办法
9万
查看次数

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

我的具体问题与JDK 1.6中使用的JMX有关:如果我使用JRE 1.6运行Java进程

com.sun.management.jmxremote
Run Code Online (Sandbox Code Playgroud)

在命令行中,Java是否为远程JMX连接选择了一个默认端口?

背景故事:我目前正在尝试开发一个程序,让客户能够通过JMX从远程机器连接到我们的一个进程.目标是实现对实时显示控制台上发生的情况的远程调试.由于他们的服务级别协议,他们强烈有动力捕获尽可能多的数据,如果情况看起来太复杂,无法快速修复,重新启动显示控制台并允许它重新连接到服务器端.

我知道我可以在JDK 1.6进程上运行jconsole,在JDK 1.6.7进程上运行jvisualvm,同时可以访问控制台.但是,由于操作要求和涉及的人员问题,我们强烈要求远程获取我们需要的数据并重新启动和运行.

编辑:我知道命令行端口属性

com.sun.management.jmxremote.port=portNum
Run Code Online (Sandbox Code Playgroud)

我想回答的问题是,如果你没有在命令行设置该属性,Java是否会选择另一个端口进行远程监控?如果是这样,你怎么能确定它可能是什么?

java jmx jconsole jvisualvm

28
推荐指数
3
解决办法
9万
查看次数

JMX定义

我在寻找:

  • JMX是什么.
  • 我可以在哪里找到一些好的JMX教程.
  • 作为Java EE程序员,JMX可以为我提供什么.
  • 还有什么我应该知道的.

java jmx java-ee

28
推荐指数
2
解决办法
5258
查看次数

如何远程访问Spring-boot JMX

我知道spring会自动暴露JMX bean.我能够使用VisualVM在本地访问它.

但是在prod上如何使用它的JMX bean远程连接到应用程序?是否有默认端口或我应该另外定义任何东西?

谢谢,雷.

spring jmx spring-boot

28
推荐指数
3
解决办法
5万
查看次数

测量代码段的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();
Run Code Online (Sandbox Code Playgroud)

在Java中是否有任何标准/通用/传统方式来实现这一目标?

这种测量用于一次性性能比较,因此我不会寻找任何生产中的长期监测过程.

我很高兴被引用到教程或外部示例,并且不希望在这里得到完整答案.也就是说,如果能够实现上述任何简单的事情,那么一个现实的例子就会非常好.

java performance monitoring jmx measurement

25
推荐指数
2
解决办法
3万
查看次数

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

我们在连接到在Amazon的EC2集群中运行的Java应用程序时遇到问题.我们肯定允许"JMX端口"(通常是RMI注册表端口)服务器端口(完成大部分工作)到相关实例的安全组.Jconsole连接但似乎挂起并且从不显示任何信息.

我们正在运行我们的java,如下所示:

java -server -jar foo.jar other parameters here > java.log 2>&1
Run Code Online (Sandbox Code Playgroud)

我们尝试过:

  • Telnet到端口连接但不显示任何信息.
  • 我们可以jconsole在ssh上使用remote-X11在实例上运行,它可以连接并显示信息.因此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)
Run Code Online (Sandbox Code Playgroud)

顺便说一句,我们使用的是我的简单的JMX包,它允许我们设置两个 RMI注册表和服务器端口,一般是通过RMI注册表半随机选择的.您还可以使用以下JMX URI强制执行此操作:

service:jmx:rmi://localhost:" + serverPort + "/jndi/rmi://:" + registryPort + "/jmxrmi"
Run Code Online (Sandbox Code Playgroud)

这些天我们为服务器和注册表使用相同的端口.在过去,我们使用X注册表端口和X+1服务器端口来简化安全组规则.您连接到注册表端口jconsole或您正在使用的任何JMX客户端.

java jmx jconsole amazon-ec2

25
推荐指数
3
解决办法
2万
查看次数

如何从java获取OS的CPU使用百分比

我想从java代码计算OS的CPU使用百分比.

  1. 有几种方法被找到它unix的命令[例如,使用mpstat,/proc/stat等...]和使用Runtime.getRuntime().exec

但我不想使用系统调用.

我试过了 ManagementFactory.getOperatingSystemMXBean()

OperatingSystemMXBean osBean =
         (OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean();
System.out.println(osBean.getSystemLoadAverage());
Run Code Online (Sandbox Code Playgroud)

但它给出了cpu加载但不是cpu使用.反正有没有找到使用百分比?

java jmx

25
推荐指数
2
解决办法
5万
查看次数

如何从外部访问docker中的JMX接口?

我正在尝试远程监视在docker中运行的JVM.配置如下所示:

  • 机器1:在ubuntu机器上的docker中运行JVM(在我的例子中,运行kafka); 本机的IP是10.0.1.201; 在docker中运行的应用程序是172.17.0.85.

  • 机器2:运行JMX监控

请注意,当我从机器2运行JMX监视时,它会因以下错误的版本而失败(注意:当我运行jconsole,jvisualvm,jmxtrans和node-jmx/npm:jmx时会出现相同的错误):

失败时的堆栈跟踪对于每个JMX监视工具看起来类似于以下内容:

java.rmi.ConnectException: Connection refused to host: 172.17.0.85; nested exception is
    java.net.ConnectException: Operation timed out
    at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:619)
    (followed by a large stack trace)
Run Code Online (Sandbox Code Playgroud)

现在有趣的是,当我在运行docker(上面的机器1)的同一台机器上运行相同的工具(jconsole,jvisualvm,jmxtrans和node-jmx/npm:jmx)时,JMX监控正常工作.

我认为这表明我的JMX端口处于活动状态且工作正常,但是当我远程执行JMX监视时(从机器2),它看起来像JMX工具无法识别内部docker IP(172.17.0.85)

下面是机器1上JMX监控工作的相关(我认为)网络配置元素(注意docker ip,172.17.42.1):

docker0   Link encap:Ethernet  HWaddr ...
      inet addr:172.17.42.1  Bcast:0.0.0.0  Mask:255.255.0.0
      inet6 addr:... Scope:Link
      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
      RX packets:6787941 errors:0 dropped:0 overruns:0 frame:0
      TX packets:4875190 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:0
      RX bytes:1907319636 (1.9 GB)  TX bytes:639691630 (639.6 MB)

wlan0     Link encap:Ethernet  HWaddr ... 
      inet addr:10.0.1.201 …
Run Code Online (Sandbox Code Playgroud)

java jmx docker jmxtrans

25
推荐指数
4
解决办法
2万
查看次数

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

我们在Sun VM 1.5.0_06-b05上运行的Tomcat 5.5.17上部署的Web应用程序出现了一些减速,我们的托管公司没有提供足够的数据来查找问题.

我们正在考虑在生产服务器上安装lambda探针,但它需要启用JMX(com.sun.management.jmxremote)以获取内存和CPU统计信息.

启用JMX会导致严重的性能损失吗?

如果我们启用JMX,我们是否会打开任何安全漏洞?如果我们只启用对JMX的本地访问,是否需要设置安全身份验证?

是否有人使用相同的(tomcat + lambda探针)没有生产问题?

UPDATE

看看答案似乎单独启用JMX不会给VM带来很大的开销.如果附加到VM的监视应用程序(无论是JConsole,lambda探测器还是其他任何程序)都过度投入,则可能会产生额外的工作.

java security performance tomcat jmx

23
推荐指数
2
解决办法
1万
查看次数

如何在服务器中找到JMX端口?

如果我能看到JAVA OPTS参数,我相信我能搞清楚.我想使用Jconsole监视一个hornetq服务器,所以我需要端口号.

我记得在我连接它的时候使用了一些像java grep等命令.

java jboss jmx

23
推荐指数
2
解决办法
7万
查看次数