Chinaunix首页 | 论坛 | 博客
  • 博客访问: 83622
  • 博文数量: 14
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 80
  • 用 户 组: 普通用户
  • 注册时间: 2012-05-16 22:14
文章分类

全部博文(14)

文章存档

2014年(1)

2013年(13)

我的朋友

分类: 系统运维

2013-04-11 17:27:13

前段时间在排查问题过程中我使用了jprofiler远程进行了jvm资源使用情况的监控,从系统的损耗来看,jprofiler对系统资源尤其是内存的消耗是非常庞大的。当时配置的jprofiler内存使用上线是1G,后来发现系统内存在整个测试过程中出现持续上涨的趋势,最后稳定在3G左右(JVM的内存我们配的上限值是2G)。

从这个情况来看,如果我们要在测试过程中利用图形界面的形式实时监控jvm内存的使用情况,使用jprofiler是不合适的;在对几个性能测试工具进行评估后,我们最终选定了visualvm进行我们的java资源监控,下面我将讲述一下如何配置visualvm监控jvm资源以及在监控过程中visualvm在server上面的性能消耗情况

1. 如何配置visualvm监控

visualvm支持在linuxwindows上启用图形界面监控jvm的资源,基于目前我们的server资源比较紧张,而且从监控方便的角度来分析(我们现有serverlinux系统是关闭图形界面的,如果要支持visualvm的图形显示需要安装插件),我推荐在自己的windows环境中安装监控的客户端

Visualvm目前支持两种remote connection方式,分别是jstatdJMX方式;我看了一下官方的说明文档,如果是针对jboss的监控,官方还是推荐使用JMX的方式监控,因此下面我就讲述一下如何在server端以及客户端配置JMX方式监控的visualvm

(1)首先要修改JDK中JMX服务的配置文件,以获得相应的权限:

进入$JAVA_HOME所在的根目录的/jre/lib/management子目录下,

a.jmxremote.password.template文件复制为jmxremote.password

b. 调整jmxremote.accessjmxremote.password的权限为只读写,可以使用如下命令

chmod 600 jmxremote.access jmxremote.password

c. 打开jmxremote.password文件,去掉

# monitorRole QED

# controlRole R&D

这两行前面的注释符号

(2)修改env.sh

打开env.sh文件,并在JVM的启动配置中添加如下信息:

JAVA_OPTS="-Dcom.sun.management.jmxremote.port=1099 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=10.20.150.218 其他配置”

这几个配置的说明如下:

-Dcom.sun.management.jmxremote.port:这个是配置远程connection的端口号的,要确定这个端口没有被占用

-Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false:这两个是固定配置,是JMX的远程服务权限的

-Djava.rmi.server.hostname:这个是配置serverIP的,要使用serverIP最好在机器上先用hostname –i看一下IP是不是机器本身的IP,如果是127.0.0.1的话要改一下,否则远程的时候连不上,目前我们的server上我已经都改好了

(3)Windows客户端配置

JDK 1.6版本自带visualvm,只需要进到bin目录下启动即可

启动后页面比较简洁,配置也很简单:

a. 点击左侧菜单的add Remote host,输入serverIP,然后再advanced settings里配置端口(注意这个端口要和server上的端口一致)

b. 右击刚才配置的IP,选择JMX connection方式,再次输入端口,就可以监视到JVM资源了,如下:

使用visualvm远程监控JVM

2. visualvm监控的资源消耗

我们配置了一个简单的apache+jboss应用,并用jmeter进行了一个长时间的加压,在加压过程中重点关注了系统资源的使用情况,如下(加压到9:30结束,另外cpu在最后一段出现了较大的毛刺是由于我在加压最后在server上用脚本处理数据导致,可以忽略该部分):

使用visualvm远程监控JVM

从长时间加压的结果来看,visualvm在监控过程中对cpuload不会造成什么压力,这点同jprofiler一致;内存在加压过程中总计有1%左右的升高(稳定后)(系统内存是8G),表明visualvm对系统内存的消耗比jprofiler要低很多,在正常性能测试过程中如果开启visualvm监控对系统整体性能基本上没有影响(不要进行dump heap的操作);当然,visualvm有一些功能相对jprofiler要简化一些,因此如果需要排查性能问题我还是推荐使用jprofiler

转载出处:http://blog.sina.com.cn/s/blog_4e90b3ba0100muco.html

阅读(1146) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~