乐趣区

关于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 都须要进行配置,比拟不便。

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

退出移动版