【转载】JConsole & JVisualVM远程监视Webphere服务器JVM

    JConsole是JDK里自带的一个工具,可以监测Java程序运行时所有对象的申请、释放等动作,将内存管理的所有信息进行统计、分析、可视化。我们可以根据这些信息判断程序是否有内存泄漏问题。

  使用JConsole工具来分析WAS的JVM问题,需要进行相关的配置。

  首先我们看WAS服务器端的配置.

  1、登录was控制台https://10.4.119.18:9043/ibm/console/,找到自己的应用程序服务器---java和进程管理---进程定义--JAVA虚拟机,然后配置 通用JVM 参数 :

  加入以下jvm参数:-Djavax.management.builder.initial= -Dcom.sun.management.jmxremote

  注意:等号后面一定要保留空格,否则会报错。 

  2、修改/usr/IBM/WebSphere/AppServer/java/jre/lib/management下的management.properties文件,在最后加入

  com.sun.management.jmxremote.port=8999

  com.sun.management.jmxremote.authenticate=false

  com.sun.management.jmxremote.ssl=false

  注意:先执行netstat -ano | grep 8999,查看这个端口是否被使用。另外注意防火墙对8999端口的配置,要放开,否则远程机器可能连接不上.

  3、设置jconsole远程登录的用户名和密码

  在/usr/IBM/WebSphere/AppServer/java/jre/lib/management下有个jmxremote.password.template文件,在最后面加入你要设置的用户名和密码

  root root@123 (用户名、密码,可以随意修改)

  4、在was控制台上停掉自己的应用程序服务器,然后重启。

  WINDOWS客户端的设置

  1、进入JAVA所在的BIN目录 

  2、输入IP、端口号、用户名和密码进行远程连接 

  3、监控界面可以看到内存、类、线程、CPU的使用情况。 

  使用这个工具再配合JCA工具就能很方便的分析内存溢出问题。

  Java VisualVM也是JDK的一个集成的分析工具,自从JDK 6 Update 7以后已经作为Sun的JDK的一部分。VisualVM可以监控应用程序的性能和内存占用情况、监控应用程序的线程、进行线程转储(Thread Dump)或堆转储(Heap Dump)、跟踪内存泄漏、监控垃圾回收器、执行内存和CPU分析,保存快照以便脱机分析应用程序;同时它还支持在MBeans上进行浏览和操作。 VisualVM自身要在JDK6以上的运行,但是JDK1.4以上版本的程序也能被它监控。

  启动方法:进入JAVA_HOME所在的bin目录,运行jvisualvm.exe就可以启动VisualVM

  远程连接WAS服务器的话,需要添加JMX连接方式就可以了 

  内存溢出的原因有很多种,比如:

  1、数据量过于庞大;死循环 ;静态变量和静态方法过多;递归;无法确定是否被引用的对象;

  2、虚拟机不回收内存(内存泄漏);

  说白了就是程序运行要用到的内存大于虚拟机能提供的最大内存就发生内存溢出了。 内存溢出的问题要看业务和系统大小而定,对于某些系统可能内存溢出不常见,但某些系统还是很常见。

  内存溢出的一般解决方法:

  一个是优化程序代码,如果业务庞大,逻辑复杂,尽量减少全局变量的引用,让程序使用完变量的时候释放该引用,能够让垃圾回收器回收和释放资源。

  二就是物理解决,增大物理内存,然后通过-Xms256m -Xmx2048m 的修改来增大内存空间。

JMX(Java Management Extensions)是一种基于Java的管理技术,它允许应用程序通过标准接口提供管理信息。配置JMX远程监控主要涉及服务器端和客户端的设置,以便可以使用JConsoleJVisualVM等工具对运行中的Java应用程序进行远程诊断和监控。下面是详细的配置步骤: 参考资源链接:[JMX配置详解与实战教程:服务器端、客户端及主机名设置](https://wenku.youkuaiyun.com/doc/51yzrxv1a7?spm=1055.2569.3001.10343) 1. 服务器端配置: - 确保Java应用程序配置了JMX远程端口,以便客户端可以连接到服务器。这通常通过添加JVM参数来实现,例如: ``` -Dcom.sun.management.jmxremote.port=8999 ``` - 如果需要远程连接时的身份验证,还需要设置用户名和密码。这可以通过添加以下参数来完成: ``` -Dcom.sun.management.jmxremote.authenticate=true -Dcom.sun.management.jmxremote.access.file=jmxremote.access -Dcom.sun.management.jmxremote.password.file=jmxremote.password ``` - 对于需要加密通信的情况,可以启用SSL连接,通过设置如下参数: ``` -Dcom.sun.management.jmxremote.ssl=*** ***.ssl.keyStore=路径/到/你的/*** ***.ssl.keyStorePassword=密钥库密码 ***.ssl.trustStore=路径/到/你的/*** ***.ssl.trustStorePassword=信任库密码 ``` 2. 客户端配置: - 确定服务器端JMX端口已正确打开并监听,客户端使用JConsoleJVisualVM连接到该端口进行监控。 - 如果使用JConsole,可以通过`JConsole`工具输入Java应用程序的主机名和JMX端口号进行连接。 - 如果使用JVisualVM,同样需要在`JVisualVM`中添加远程主机,并输入相应的JMX端口号。 3. 主机名配置: - 如果在连接时遇到无法识别主机名的问题,确保`/etc/hosts`文件中映射了正确的IP地址和主机名。 - 在Linux系统中,可以通过编辑`/etc/hosts`文件或使用`hostname`命令修改临时主机名来解决名称解析问题。例如: ``` *** *** ``` 以上步骤完成后,你应该能够成功地使用JConsoleJVisualVM连接到Java应用程序的JMX服务进行远程监控和诊断。为了更深入地了解JMX配置及使用,推荐阅读《JMX配置详解与实战教程:服务器端、客户端及主机名设置》,这本书详细地介绍了JMX的配置方法,并提供了丰富的实战案例帮助读者理解并应用JMX进行应用管理。 参考资源链接:[JMX配置详解与实战教程:服务器端、客户端及主机名设置](https://wenku.youkuaiyun.com/doc/51yzrxv1a7?spm=1055.2569.3001.10343)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值