您的位置:首页 > 运维架构 > Linux

jconsole连接linux服务器查看JVM使用情况

2015-02-09 10:47 218 查看
转自:
这段时间,因为项目要上线,所以要进行压力测试,这就牵涉到要测试系统性能问题,查看JVM的使用情况是必不可少的,不然上生产后造成内存泄露就over了。服务器用的是阿里云的云服务器,预装的Centos,然后在本地用JDK自带的查看JVM使用情况工具jconsole来监控一下在高并发情况下JVM使用情况。

首先在配置服务器的JMX之前,在网上google的半天,看了一些文章后,觉得配置起来很简单,就是需要修改一下tomcat的启动文件就行了,所以就下手开始搞了。后来搞了半天竟然连不上,懊恼气愤之余,终于静下心好好看一下别人的文章,然后分析了一下,最后根据网上写的和自己的分析(这里主要参考http://my.oschina.net/7shell/blog/72054,写的确实很详细,大家也可以参考一下),终于是配好了。然后才发现原来好简单,觉得自己刚开始有点弱爆了,下面就把自己的配置记录一下,方便以后查看。
首先配置tomcat的conf文件夹下面的catalina.sh文件,这个地方有些同学就简单的配置了一下,并没有涉及到访问权限和密码的配置,感觉这样不太好,毕竟是服务器是吧,总不能让人乱连接,配个密码总是好点^_^,访问权限和密码文件怎么搞呢,所以需要从别处copy一份过来,我们从jdk的安装目录copy一份过来修改一下,主要是增加访问用户和设置密码用,这里我们把配置文件放在conf文件夹下面
首先进入tomcat的conf目录下
# cd /usr/local/tomcat/conf/    (这个是tomcat路径,根据自己tomcat安装路径吧)

然后copy一份用户文件到当前目录
# cp /usr/java/jdk1.6.0_41/jre/lib/management/jmxremote.password.template
jmxremote.password
# chmod 700 jmxremote.password    (如果文件不可写,就修改一下文件的权限了)
# vi jmxremote.password(在文档末尾加上自己的用户名和密码)
testJmx 123456

最后 copy一份访问权限文件到当前目录
# cp /usr/java/jdk1.6.0_41/jre/lib/management/jmxremote.access jmxremote.access
# chmod 700 jmxremote.access (如果文件不可写,这里是修改一下文件的权限了)
# vi jmxremote.access
在文档最后把
monitorRole   readonly
controlRole   readwrite
注释掉,然后把刚才添加的用户添加进去
testJmx readwrite

接下来就要配置tomcat的配置文件了
这里是修改一下catalina.sh文件
#cd /usr/local/tomcat/bin/
#cd vi catalina.sh

然后找到下面这句话
# ----- Execute The Requested Command -----------------------------------------
在这句话上面加上下面这些配置文件,下面的配置文件及解释信息是直接拿过来的^-^
(参数意义依次是:
-Dcom.sun.management.jmxremote 启用JMX远程监控
-Dcom.sun.management.jmxremote.port=9004 使用端口9004(可随意指定只要不冲突)
-Dcom.sun.management.jmxremote.authenticate=true 远程连接需要密码认证
-Dcom.sun.management.jmxremote.ssl=false 不使用SSL(SSL我试了多次都没有配置成功:P 暂时不开启)
-Dcom.sun.management.jmxremote.access.file=/usr/local/tomcat/conf/jmxremote.access 使用指定的JMX帐号授权文件
-Dcom.sun.management.jmxremote.password.file=/usr/local/tomcat/conf/jmxremote.password 使用指定的JMX帐号文件)

所以说就是要把下面信息加入到配置文件中去
# ----- JMX Config Start -----
JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=10207 -Dcom.sun.management.jmxremote.authenticate=true -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.access.file=/usr/local/tomcat/conf/jmxremote.access -Dcom.sun.management.jmxremote.password.file=/usr/local/tomcat/conf/jmxremote.password"
export JAVA_OPTS
# ----- JMX Config End -----

保存一下,然后启动tomcat就行可以用jconsole访问了

最后如果访问还是连接不上的话,就可能是主机ip没有配置好,这时运行一下hostname -i,如果显示的是127.0.0.1,这就需要配置一个hosts文件了
#vi /etc/hosts
把里面的主机地址修改为:
主机地址  localhost
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
主机地址 AY130509181338723805Z

这样配置完全以后,就可以用jconsole连接,输入用户名和密码就可以访问进行监控了。

装个munin , 能更全面撑控。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  jvm