JVM资源监控

     本人就一屌丝coder,懒得总结,工作了两年感觉经常要重复的做一些无谓的事情,就linux的命令而言,某一时间如何要经常部署,命令会记得比较熟,但是过一段时间没用又忘记,如果没有做笔记,某些项目没保存,则又要重google一次某些命令,自我感觉工作效率很低,so某些笔记是必须的!

本来看好JavaEye论坛的,可是那个博客的编辑器太烂了,刚才想记录一下,发觉修改都蛋疼,好差鸡,所以还是转到CSDN旗下吧....

这是人生第一次写博客啊,可怜的娃,其实生活工作中好多好多类似偶这等懒人的coder,身边认识的就不少....

言归正传...

     由于公司系统所属后台短信推送平台,基于socket的SMGP接口,在此前也做一些相关的后台工作,基本模块完成后,于是便在测试的过程中想连接到测试服务器上面看看当前系统运行的情况,由于工作机器是windows,在其下面的%Java_home%/bin下面有图形化实时监控的Jconsole与JVisualVM等监控软件,此等对于我们coder能清楚的了解自己当开发系统下面的内存、cpu、线程等详细情况。 这些软件能直接监控本机的JVM实例,或者因为同一个Java虚拟机的缘故可直接监控、然而当系统搭建在linux而非自己的开发机上时,可以使用自带的jmap等查看当前对象的内存,包括什么老年区、年轻区等,详细命令使用jmap --help啦...(具体好多其它命令详细的可以到%java_home%/bin目录下看看,看到不熟悉的可执行程序,可以google一它嘛,或者看看这位仁兄的文章http://blog.csdn.net/kelly859/article/details/5827365

刚才所说的Jconsole与JVisualVM都是基于Java Management Extensions (JMX)的实时图形化监测工具,而要在远程的机器上启用JMX功能,则需要

第一步:

【java ${java_opt} className】 ,当中的${java_opt}则为一些java常用命,这里必须包括以下5条:

1、-Dcom.sun.management.jmxremote.port=12345(port啦)

2、-Djava.rmi.server.hostname=132.96.63.41 (服务器的IP啦)

3、-Dcom.sun.management.jmxremote (这个必须有,有很多帖也介绍jvm监控,可是缺少这个命令,固然不行)

4、-Dcom.sun.management.jmxremote.ssl=false (是否通过ssl加密码、默认配置false,不需改动)

5、-Dcom.sun.management.jmxremote.authenticate=false(是否需要认证什么的,默也是false,不需改动) 给出一个完整的shell例子:

paste一下自己的shell当作笔记也供大家参考:

start.sh

 ------------------------------------------- perfect seperate line -------------------------------------------------------

#!/bin/bash

className=cn.jasic.Server

classpath=.

#远程JVM监控
remote_opt="-Dcom.sun.management.jmxremote.port=12345 -Djava.rmi.server.hostname=132.96.63.41 -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -server"

#内存设置
mem="-Xms128m -Xmx1024m"

#日志文件名称
logFile=../log/`date +%Y%m%d`

#用于启动SMGP接口模块的类路径
for file in `ls -1 ../lib | grep ".jar"`
{
  classpath=${classpath}:../lib/${file}
}

#echo ${PWD##*/}
#echo remote_opt: ${remote_opt}
#echo className: ${className}
#echo classpath: ${classpath}
#echo logFile: ${logFile}
#echo mem: ${mem}

#清除日志
rm -f ../log/*

#查看日志
cd ../log

#运行后台程序
#nohup java ${remote_opt} ${mem} -cp ${classpath} ${className} 2>&1>${logFile} & 
#tail -F ${logFile}

java ${remote_opt} ${mem} -cp ${classpath} ${className} 


------------------------------- perfect seperate line -----------------------------------------

 

------------------------------- perfect seperate line -----------------------------------------

添加远程登录的用户名与密码方式

1、到C:\Program Files\Java\jdk1.6.0_43\jre\lib\management下复制:

jmxremote.access与jmxremote.password.template,把jmxremote.password.template改名成jmxremote.password(同样可以不用改名的);


2、编辑jmxremote.password内容如下:(用户 密码)

jasic1 jasic1

jasic2 jasic2


3、编辑jmxremote.access内容如下:(控制权限)

jasic1 readonly

jasic2   readwrite \
        create javax.management.monitor.*,javax.management.timer.* \
        unregister


具体的配置内容及说明可以看jmxremote.access与jmxremote.password.template的注释。

4、把jmxremote.password与jmxremote.access文件同时copy到linux服务上的当前用户目录jmx文件夹下面;

具体路径分别为:

~/jmx/jmxremote.password

~/jmx/jmxremote.access

同时使用chmod -R 400 ~/jmx/* 根据权限为只读(否则如果非只读会在启动时报错)


5、然后在jvm启动时添加如下参数

-Dcom.sun.management.jmxremote.port=12345 -Djava.rmi.server.hostname=192.168.1.100 -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.ssl=false-Dcom.sun.management.jmxremote.authenticate=true -Dcom.sun.management.jmxremote.password.file=~/jmx/jmx.password-Dcom.sun.management.jmxremote.access.file=~/jmx/jmx.access

注红色:根据自己设置而配置

标注黄色:使用《用户名:密码》方式的远程连接与无《用户名:密码》方式的远程连接的差异。


------------------------------- perfect seperate line -----------------------------------------

最后使用本地jvisaulvm工具连接:如下


第二步:

1、打开运行输入:Jvisualvm,回车,或直接到%java_home%/bin下双击Jvisualvm.exe,启动后,添加JMX

                             


2、连接中选择,并输入上訹${java_opt}中的port,最后成功画面

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当谈到 JVM 监控的背景时,可以从以下几个方面进行细化: 1. JVM 运行时环境:JVM(Java虚拟机)是Java平台的核心组件,负责将Java字节码转换成机器码并执行。JVM提供了一些内置的监控工具和API,用于收集和报告有关应用程序性能和行为的信息。 2. 应用程序复杂性增加:随着应用程序的复杂性不断增加,尤其是在大规模和分布式系统中,需要对JVM进行监控来了解应用程序的性能和行为。监控可以帮助开发人员识别和解决性能问题、内存泄漏、线程问题等。 3. 性能优化需求:对于企业级应用程序而言,性能是关键指标之一。通过监控JVM,可以了解应用程序的资源利用情况、瓶颈点以及优化潜力。这有助于开发人员进行性能调优,提高应用程序的响应时间和吞吐量。 4. 故障排查和容错能力:当应用程序发生故障或异常时,监控JVM可以提供宝贵的信息来帮助定位问题。通过监控内存、线程、日志等指标,可以追踪异常发生的原因,并采取适当的措施来修复问题,提高应用程序的可靠性和稳定性。 5. 资源管理和容量规划:监控JVM可以提供关于资源使用情况的实时数据,如内存、CPU、磁盘等。这有助于进行容量规划,预测未来的资源需求,并确保应用程序在高负载情况下仍能正常运行。 总而言之,JVM监控的背景可以归结为应对应用程序复杂性增加、性能优化需求、故障排查和容错能力、资源管理和容量规划等方面的需求。通过监控JVM,开发人员和运维人员能够获得关键的运行时数据,以便更好地管理、维护和优化应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值