关于jvm:Jvm监控工具Jvisualvm的安装配置

阐明:在linux零碎中对jvm有一套监控命令,命令的应用办法即作用本文不做赘述,可自行学习(参考地址:http://blog.csdn.net/fenglibing/article/details/6411999)。

本文重点介绍监控工具jvisualvm(另称为VisualVM)的应用。

Jvisualvm的启动

1、 须要装置jdk

2、 在jdk的装置门路下的bin目录中找到jvisualvm.exe,双击即可启动

(我本地的门路为D:Program FilesJavajdk1.8.0_20binjvisualvm.exe)

启动后的界面如图

Jvisualvm监控本地资源

如果java程序运行在本机,则jvisualvm启动之后,默认在“本地”一栏中能够间接看到

Jvisualvm监控近程资源

应用jmx形式

因为我监控的指标机应用的是tomcat,因而以tomcat为例进行阐明

Tomcat加war包的配置

这种比拟场景,将服务打成war包放在tomcat中,批改tomcat的配置即可进行监控。

步骤1:在须要监控的指标机上找到tomcat的配置(linux为catalina.sh,Windows为catalina.bat,上面以linux的catalina.sh为例进行阐明)

步骤2:在catalina.sh中增加以下配置

JAVA_OPTS=”-Dcom.sun.management.jmxremote.port=9998

-Dcom.sun.management.jmxremote.ssl=false

-Dcom.sun.management.jmxremote.authenticate=false

-Djava.rmi.server.hostname=172.31.7.37″

增加后的成果如图;

步骤三:增加之后重启tomcat

步骤四:在jvisualvm的“近程”栏下右键增加近程主机

步骤五:在近程主机中右键抉择增加jmx链接

步骤六:在jmx链接的配置中输出指标机ip及端口,连贯即可

步骤七:双节已增加的近程机器,即可关上次要的监控界面

~~~~

服务内嵌tomcat的配置

这种形式在linux下也比拟常见,服务不是war包放在tomcat下,而是通过援用tomcat的jar包调用内置的tomcat来运行。这种形式通常在服务的启动脚本中增加相干监控配置,常见的启动脚本命名为start.sh、server.sh等

以基线我的项目的安全监管服务文字鉴黄接口为例:

须要监控的服务为safety-server,启动目录:safety-server/bin/ start.sh

在服务的bin目录下,编辑启动脚本:vim start.sh

操作1:执行脚本中增加配置项参数:

操作2:给配置参数设定配置信息

操作3:重启服务

Jstatd形式

VisualVM在监控本地JVM的时候是很不便的。只有利用程序运行起来,咱们就能够从VisualVM外面监控进去。然而有些性能在该监控模式下会有限度

设置的步骤如下:

步骤一:在远程目标机上找到java的jdk装置门路(能够应用这个命令进行查找:find / -name java)

步骤二:在jdk的bin目录下查找是否存在jstatd小插件

查找命令:ls -l | grep jst

查找后果:

步骤三:在目录下创立安全策略文件,文件名为jstatd.all.policy (文件名能够本人取)

策略文件内容为

grant codebase “file:${java.home}/../lib/tools.jar” {

permission java.security.AllPermission;

};

即如图所示:

步骤四:查看homename值,是否为指标机本人的ip

查看命令:hostname –i

如果ip地址不对,须要批改/etc/hosts文件

步骤五:调用jstatd命令启动过程

启动命令:jstatd -J-Djava.security.policy=jstatd.all.policy

步骤六:监控程序VisualVM增加一个近程主机后,在抉择增加jststd连贯,间接确定即可

特地阐明

Jmx形式阐明

配置具体阐明

1、针对增加的配置阐明如下:

JAVA_OPTS=”-Dcom.sun.management.jmxremote.port=9998 ———-设置监控端口

-Dcom.sun.management.jmxremote.ssl=false ———–指定了 JMX 是否启用 ssl

-Dcom.sun.management.jmxremote.authenticate=false ——-JMX 是否启用鉴权

-Djava.rmi.server.hostname=172.31.7.37″ ——-配置 server 的 IP

2、在监控端口时,留神须要应用未被零碎占用的端口,避免端口抵触。检测端口是否被占用应用如下命令:

netstat –an|grep 端口

Jstatd形式


长处:该形式能够比拟直观的监控到服务器上所有的java程序,不必像jmx那样每个tomcat都须要进行配置,比拟不便。

毛病:无奈对某个过程执行垃圾回收,也无奈应用抽样性能,看不到线程状态面板,无奈无效的排查线程死锁等问题

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理