linux下没有设置jmxremote port的时候,如何显示jconsole的图形界面

 

在linux服务器上,因为gui显示的问题。我们直接jconsole时。就会报

Exception in thread "AWT-EventQueue-0" java.awt.HeadlessException: 
No X11 DISPLAY variable was set, but this program performed an operation which requires it.
        at java.awt.GraphicsEnvironment.checkHeadless(GraphicsEnvironment.java:159)
        at java.awt.Window.<init>(Window.java:432)
        at java.awt.Frame.<init>(Frame.java:403)

等等一系列错误。

所以我们一般都会在window下,通过远程进程的方式来使用jconsole

 



 

前提是需要设置-Dcom.sun.management.jmxremote.port -Dcom.sun.management.jmxremote等一系列jvm参数。

 

幸运的是jdk6 com.sun.management.jmxremote 是默认开启的,可是我们没有设置远程端口。

The documentation suggests that the JMX agent uses a local port -- something unreachable from outside the machine -- unless you specify the following property:

com.sun.management.jmxremote.port=portNum

jmx文档告诉我们,如果不设置远程端口,通过jconsole的远程进程是连接不上的。

亲们要保存现场,想通过当前运行环境查看内存的使用情况等等等。怎么办?

好吧,下面我们来做到window上输出linux的图形界面。用的工具是xming和secureCRT

(原理可以看:http://hi.baidu.com/mooncold/blog/item/8e0dfddc4f29a3a4cd11663a.html)

1,到http://sourceforge.net/projects/xming/下载xming

2,下载完毕后,运行一直点击next,安装完成。

 



 

3,开始菜单->所有程序->xming->Xlaunch ,然后一路下一步,直到完成。

 




 

4,打开SecureCRT,选中24架构开发,点击红色标记的属性

 


 

5,勾选转发x11数据包

 


6,

 

好了,用secureCrt登录刚才设置的机器上。

export DISPLAY=window机器的ip:刚才地三部图形中的端口号。(可通过ipconfig自己查看自己机器的ip)

比如 export DISPLAY=127.0.0.1:0

然后 jconsole

亲,好了。这是你会看到熟悉的jconsole界面了。好了,快去使用你的MBean吧。

 

 

顺便说一个我们想用jconsole连接某个java进程时发现,竟然没有供我们选择的选项。

这位作者http://trinea.iteye.com/blog/1196400 做了非常好的描述。

原文如下:

1、jps的作用

jps类似linux的ps命令,不同的是ps是用来显示进程,而jps只显示java进程,准确的说是当前用户已启动的部分java进程信息,信息包括进程号和简短的进程command。

 

2、某个java进程已经启动,用jps却显示不了该进程进程号

这个问题已经碰到过两次了,所以在这里总结下。

现象:

用ps -ef|grep java能看到启动的java进程,但是用jps查看却不存在该进程的id。待会儿解释过之后就能知道在该情况下,jconsole、jvisualvm可能无法监控该进程,其他java自带工具也可能无法使用

 

分析:

java程序启动后,默认(请注意是默认)会在/tmp/hsperfdata_userName目录下以该进程的id为文件名新建文件,并在该文件中存储jvm运行的相关信息,其中的userName为当前的用户名,/tmp/hsperfdata_userName目录会存放该用户所有已经启动的java进程信息。对于windows机器/tmp用Windows存放临时文件目录代替。

 

而jps、jconsole、jvisualvm等工具的数据来源就是这个文件(/tmp/hsperfdata_userName/pid)。所以当该文件不存在或是无法读取时就会出现jps无法查看该进程号,jconsole无法监控等问题

 

原因:

(1)、磁盘读写、目录权限问题

若该用户没有权限写/tmp目录或是磁盘已满,则无法创建/tmp/hsperfdata_userName/pid文件。或该文件已经生成,但用户没有读权限

 

(2)、临时文件丢失,被删除或是定期清理

对于linux机器,一般都会存在定时任务对临时文件夹进行清理,导致/tmp目录被清空。这也是我第一次碰到该现象的原因。常用的可能定时删除临时目录的工具为crontab、redhat的tmpwatch、ubuntu的tmpreaper等等

这个导致的现象可能会是这样,用jconsole监控进程,发现在某一时段后进程仍然存在,但是却没有监控信息了。

 

(3)、java进程信息文件存储地址被设置,不在/tmp目录下

上面我们在介绍时说默认会在/tmp/hsperfdata_userName目录保存进程信息,但由于以上1、2所述原因,可能导致该文件无法生成或是丢失,所以java启动时提供了参数(-Djava.io.tmpdir),可以对这个文件的位置进行设置,而jps、jconsole都只会从/tmp目录读取,而无法从设置后的目录读物信息,这是我第二次碰到该现象的原因

 

关于设置该文件位置的参数为-Djava.io.tmpdir

 

其他:

/tmp/hsperfdata_userName/pid文件会在对应java进程退出后被清除。如果java进程非正常退出(如kill -9),那么pid文件会被保留,直到执行一次java命令或是加载了jvm程序的命令(如jps、javac、jstat),会将所有无用的pid文件都清除掉

 

 

我要补充的是:

我设置了-Djava.io.tmpdir=xxx时,竟然没有起作用。

然后查了一下。jdk bug,发现

http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6938627

其中

http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7009828。

已解决。

但是我的版本java version "1.6.0_25"
Java(TM) SE Runtime Environment (build 1.6.0_25-b06)
Java HotSpot(TM) 64-Bit Server VM (build 20.0-b11, mixed mode)。

应该是bug解决后的版本。不解。

但是在我的window下,java版本是

java version "1.6.0_25"
Java(TM) SE Runtime Environment (build 1.6.0_25-b06)
Java HotSpot(TM) 64-Bit Server VM (build 20.0-b11, mixed mode)

设置的jvm参数是可以起作用的。vmid生成在我设置的tmpdir目录下。

更是不解。在此不纠结。

想从运维的角度说一下。生产线上最好启动jvm时加入-Djava.io.tmpdir=xxx的设置。

因为毕竟默认目录/tmp/会经常被清理的。当我们想用jps,jconsole,jstat等等工具时,发现不能用时。

还是很挫败的。

更多信息请查看 java进阶网 http://www.javady.com

Zabbix-Java-Gateway部署与JMX监控实战指南 JMX(Java Management Extensions)是Java平台的标准管理和监控接口,它通过MBean(Managed Bean)暴露JVM及应用的运行时指标,如内存使用、线程状态和GC信息。其原理基于客户端-服务器模型,允许远程访问JVM内部数据。在分布式监控体系中,JMX的价值在于提供了标准化的应用性能数据采集方式,是实现Java应用可观测性的基础。Zabbix作为企业级监控解决方案,通过Zabbix-Java-Gateway组件桥接了其监控核心与JMX协议,解决了C语言编写的Zabbix 阅读详情

相关推荐

【教程】BM1684X-32边缘计算盒子 网络配置教程

BM1684X边缘计算盒子网络配置教程

ShiMetaPi的博客 714

jar包开启jmx的三种方式

我们部署war包的时候都是通过修改tomcat配置文件的方式开启jmx的,那么jar包应该怎么开启呢? 1.直接在启动命令中开启 java -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=8849 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.serv

JK_sparrow的博客 4188

别再只设接触压力了!用ANSYS Workbench模拟O型圈密封泄漏的完整流程

本文详细介绍了在ANSYS Workbench中模拟O型圈密封泄漏的完整流程,重点解析了流体渗透压力载荷的设置与应用。通过双物理场耦合模型和精确的参数配置,帮助工程师准确评估密封性能,避免传统方法仅考虑接触压力的局限性。文章还提供了常见问题的解决方案和工程实践建议,提升密封设计的可靠性。

weixin_30372371的博客 401

JPS 工具, 显示当前Java进程

JPS(Java Virtual Machine Process Status Tool)是JDK1.5提供的一个显示当前所有java进程pid的命令,简单实用,非常适合在linux/unix平台上简单察看当前java进程的一些简单情况。 我想很多人都是用过unix系统里的ps命令,这个命令主要是用来显示当前系统的进程情况,有哪些进程,及其 id。 jps也是一样,它的作用是显示当前系统的j

4387

三菱CNC数据采集实战:从环境搭建到代码实现的完整指南

本文提供了一份完整的三菱CNC数据采集实战指南,涵盖从开发环境搭建、核心SDK获取、网络配置到基于C#和A2协议的完整代码实现。文章详细解析了初始化、连接管理、数据获取与展示四大核心模块,并分享了错误处理、性能优化及与MES系统集成的关键技巧,帮助工程师快速构建稳定可靠的工业数据采集系统。

wood5的博客 890

基于IMU的纯惯性导航轨迹绘制实践与优化

本文深入探讨了基于IMU的纯惯性导航轨迹绘制实践。通过修改开源组合导航算法KF-GINS,屏蔽GPS更新并简化地球参数,实现了仅依赖IMU数据的轨迹解算。文章详细介绍了代码改造、轨迹可视化方法,并分析了误差累积的根本原因,为深入理解惯性导航原理与传感器融合的必要性提供了宝贵的实践经验。

ff678的博客 395

jvisualvm远程监控Red Hat6.5 Linux下的tomcat

前两天生产上的服务器突然宕机了,并且是nginx配置下的两台服务器间隔半小时全部宕机,报错如下:java.lang.OutOfMemoryError: unable to create new native thread 排查流程:查看linux服务器的pid_max = 32768,所以不可能存在是因为并发的问题造成宕机(业务量没这么大),所以使用jvisualvm监控UAT的线程数,最后找到...

AAtaotao9的博客 324

Ansys Lumerical + HFSS + optiSLang 三剑客:手把手教你优化行波MZM调制器(附完整参数配置)

本文详细介绍了如何利用Ansys Lumerical、HFSS和optiSLang三款工具构建自动化协同设计流程,以优化行波马赫曾德尔调制器(TW-MZM)的性能。通过参数化仿真、流程集成与元模型技术,该方案能高效解决多物理场耦合挑战,实现调制带宽、驱动电压等多目标的全局优化,显著提升光子集成芯片的设计效率与性能潜力。

weixin_29251131的博客 586

JVisualVM的使用实录

堆内存分析

Angegril的博客 3825

核函数——原理剖析

(Kernel Function)是机器学习和统计学中的一个重要概念,特别是在支持向量机(SVM)和其他基于核方法的算法中。核函数的主要作用是通过一个隐式的方式将数据映射到一个高维空间,从而使得在该高维空间中线性不可分的问题变得线性可分。没关系,现在让我们抛开一切无关的事情,花20分钟来认真领会一下,核函数的原理到底是什么。然后我们来说什么什么样的函数有资格称为核函数,也就是上面说的一个函数的内积矩阵是半正定矩阵。中的分布如左图所示。中是不可实现的,那如果我们将原始空间中的所有样本点,通过一个映射关系。

m0_70254540的博客 1587

Qt实现窗口等比例缩放

在Qt中,实现窗口的等比例缩放是一个常见的需求。通过对窗口的尺寸进行调整,使得窗口的内容在缩放过程中保持相同的比例,可以提供更好的用户体验。通过以上的代码,我们实现了一个可以等比例缩放的Qt窗口。在调整窗口大小时,窗口中的标签和按钮将按比例缩放,保持内容的比例不变。首先,我们需要在Qt中创建一个窗口,并设置其内容。在该事件中,我们将根据窗口的新尺寸计算出合适的比例因子,并将其应用到窗口的内容上。现在,我们将添加功能,使得窗口可以等比例缩放。最后,我们将缩放因子应用到窗口中的标签和按钮上,调整它们的尺寸。

2301_79330511的博客 3958

linux怎么设置界面显示不了怎么办,linux下没有设置jmxremote port的时候,怎么显示jconsole的图形界面...

linux下没有设置jmxremote port的时候,如何显示jconsole的图形界面在linux服务器上,因为gui显示的问题。我们直接jconsole时。就会报Exception in thread "AWT-EventQueue-0" java.awt.HeadlessException:No X11 DISPLAY variable was set, but this program ...

weixin_35749786的博客 494

机床联网系列总结

总结机床联网专栏,两个好用的工具介绍,以及后续提升的方法和建议。

若云流风的专栏 933

JConsole连接远程服务器方法

jconsole远程连接,必须配置JMX连接参数 1、linux 启动项目时,添加参数 java -Djava.rmi.server.hostname=10.160.13.111 #远程服务器ip,即本机ip -Dcom.sun.management.jmxremote #允许JMX远程调用 -Dcom.sun.management.jmxremote.port=3214 #自定义jm...

适恒 3970

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Ubuntu 20.04 apt装Java的真相:为什么default-jdk不是JDK17

Java 是一种跨平台编程语言,其运行依赖于符合规范的 JDK 实现;JDK 版本演进遵循语义化版本与长期支持(LTS)策略,不同版本对应不同的 class 文件格式(如 major version 61 即 Java 17);Ubuntu 等 Linux 发行版通过 apt 包管理器提供 Java,但其软件源受发行周期约束——Ubuntu 20.04 冻结于 2020 年,官方源仅维护 OpenJDK 11,不包含 JDK 17 或 JDK 21;这种‘版本滞后’并非缺陷,而是稳定优先的设计取舍,却直接导

www.itmmd.com 449

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

java jps 没有_jps不显示java进程信息

本来想自己整理,发现已经有前人整理,并且完美解决了我的问题,故转载,感谢分享转自:http://trinea.iteye.com/blog/1196400对于jps较熟悉可以直接查看第二部分的分析1、jps的作用jps类似linux的ps命令,不同的是ps是用来显示进程,而jps只显示java进程,准确的说是当前用户已启动的部分java进程信息,信息包括进程号和简短的进程command。2、某个j...

weixin_42144604的博客 1935

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

JMX实践-JMX连接端口

首先要从JMX URL说起。如下是一个典型的JMX URL: service:jmx:rmi://localhost:5000/jndi/rmi://localhost:6000/jmxrmi 这个JMX URL可以分为如下几个部分: service:jmx: 这个是JMX URL的标准前缀,所有的JMX URL都必须以该字符串开头。rmi: 这个是connector ser

caomiao2006的专栏 2万+

在没有图形界面(无图形界面的Linux)运行环境中运行JVisualVM监控运行的java程序

在没有图形界面(无图形界面的Linux)运行环境中不能运行JVisualVM监控运行的java程序的解决方案,通过XManager将JVisualvm重定向到一个Windows桌面也是可以监控的

老杜的博客 2450

linux系统jconsole的使用和windows远程查看

一、jconsole能干什么 查看jvm内存使用情况就可以使用jconsole,从Java 5开始 引入了 JConsole。JConsole 是一个内置 Java 性能分析器,可以从命令行或在 GUI shell 中运行。您可以轻松地使用 JConsole(或者,它更高端的 “近亲” VisualVM )来监控 Java 应用程序性能和跟踪 Java 中的代码。 二、开始部署 1、

愤怒的苹果ext的博客 1万+

linux使用jconsole

从JDK5开始就已经增加了对VM的监控功能jconsole,JDK1.6也有了进一步的改进。 然而对linux特别是Ubuntu用户来说,会碰到一些小问题。 在终端进入java_home/bin目录下, # jconsole 结果报错如下: Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException 原

jwcjlu的专栏 1万+

JMX 的remote port的查找 与设置

使用visual vm 进行 remote连接时,端口如何查找?在相应的 远程服务器上, 用jps -mlvV 列出所有的 jvm 进程和它使用的参数 从众多参数中找到 以下参数 -Dcom.sun.management.jmxremote.port=9996找到之后,在用visual VM连接的是有,就用它 去连接貌似有的是没有的,这个要看对应的应用程序的JVM参数有没有配置的。比如如下就是

NBA_2011的专栏 1万+

java运行不出那个界面_jconsole 启动不出来图形界面,求解啊

[root@node1 ~]# jconsoleException in thread "main" java.lang.NoClassDefFoundError: Could not initialize class sun.awt.X11GraphicsEnvironmentat java.lang.Class.forName0(Native Method)at java.lang.Class...

weixin_28856787的博客 637

windows下如何正确使用Jconsole远程连接linux主机上的JVM

背景说明:客户端: Windows XP SP3,JDK 1.5.0_14;服务端:CentOS 5.4 Final(Rad Hat版本:5.1.19.6,linux核心:2.6.18-164.el5),JDK 1.6.0_21 for linux。开始时,在Windows环境下,使用“jconsole”,连接CentOS下的一个Java服务,在命令行连续不断的抛出以下异常信息:2010-7-26 11:06:25 com.sun.corba.se.impl.transport.SocketOrChanne

宁静深远的专栏 4万+

linux下jconsole无法连接本地java进程解决办法

vi /etc/hosts添加 (本机真实ip地址) (本机机器名字)或者修改 127.0.0.1 为本机真实ip; 转载于:https://blog.51cto.com/java711/1350239

weixin_34150224的博客 375

Linux上执行jdk的jconsole命令报错

jconsole Exception in thread "main" java.lang.UnsatisfiedLinkError: /opt/jdk/jre/lib/amd64/libawt_xawt.so: libXtst.so.6: cannot open shared object file: No such file or directory at java.lan...

can_do_it的专栏 1625
上一篇: Portal-Basic Web 应用开发框架 —— 概述
下一篇: HTML5开发框架PhoneGap技术分析
test_touch
博客等级 码龄16年 5粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值