JAVA诊断监控工具

原创 2016年05月30日 14:46:53

jvisualvm功能:监控内存泄露,跟踪垃圾回收,运行时内存分析,线程分析...

jvm使用:jvisualvm已经被集成在jdk1.6以上的版本中(不是jre),正常安装完jdk后,至jdk的bin目录下,运行jvisualvm.exe即可



jvisualvm概述:Local标签下的第一个VisualVM为本机的eclipse监控,第二个为jvisualvm对自身的监控



监控类型:Overview,Monitor,Threads和一个Sampler。

1.Overview(jvm启动参数,系统参数)



2.Monitor


左上:cpu利用率,gc状态的监控

右上:堆利用率,永久内存区的利用率(JDK7以前叫PermGen,JDK8移除PermGen,类数据存在Metaspace)

左下:类的监控

右下:线程的监控

performGC:gc的详细运行状态

HeapDump:堆的详细状态(可以看到堆的概况,里面所有的类,还能点进具体的一个类查看这个类的状态)



3.Threads


能够显示线程的名称和运行的状态,在调试多线程时必不可少,而且可以点进一个线程查看这个线程的详细运行情况


监控服务器上的java程序

相较于监控tomcat要麻烦很多,要预先启动jstatd服务(${java_home}/bin目录下)

jstatd是一个监控JVM从创建到销毁过程中资源占用情况并提供远程监控接口的RMI(Remote Method Invocation,远程方法调用)服务器程序,它是一个Daemon程序(后台进程),要保证远程监控软件连接到本地的话需要jstatd始终保持运行。

jstatd运行需要通过-J-Djava.security.policy=***指定安全策略,因此我们需要在服务器上建立一个指定安全策略的文件jstatd.all.policy(我放在了${java_home}/bin目录下),文件内容如下:

[plain] view plain copy
  1. grant codebase "file:/home/123/123/jdk1.5.0_15/lib/tools.jar" {   
  2.     permission java.security.AllPermission;   
  3. };   

然后使用这个策略文件启动jstatd服务

[plain] view plain copy
  1. [123@123 bin]$ pwd  
  2. /home/123/123/jdk1.5.0_15/bin  
  3. [123@123 bin]$ ./jstatd -J-Djava.security.policy=./jstatd.all.policy &  

因为监控的过程中需要jstatd服务一直运行,所以加上了&,如果需要日志也可使用:

[plain] view plain copy
  1. ./jstatd -J-Djava.security.policy=./jstatd.all.policy -J-Djava.rmi.server.logCalls=true  

接下来就可以在jvisualvm中配置监控该服务器上运行的java程序了,和在jvisualvm中配置监控tomcat服务器的操作过程是一样的

需要特别注意的是,有时在配置远程监控java程序的时候jvisualvm会报一个错误

点击查看错误详情:

 connection refused to host:127.0.0.1初步判断和主机名有关系

[plain] view plain copy
  1. [123@123 bin]# hostname -i  
  2. 127.0.0.1  
[plain] view plain copy
  1. [123@123 bin]# hostname 192.168.58.168  

修改完重启jstatd服务(网上很多人说要修改主机的/etc/hosts文件,但是我自己测试修改/etc/hosts文件是没有效果的,必须要修改主机名

填写主机名:


这里要选添加一个jstatd连接:

直接选择默认配置即可(默认使用1099端口):

点击ok后,168上的所有java程序就会自动列出:


PS:

jvisualvm也是可以安装插件的,具体步骤为tool -> plugin ->aviable plugin,推荐一个非常好用的插件VisualGC

安装完这个插件后,将会增加新的监控条目Visual GC,可以看到虚拟机内存各个区的使用情况





Linux的IO性能监控工具iostat详解

Linux系统出现了性能问题,一般我们可以通过top、iostat、free、vmstat等命令来查看初步定位问题。其中iostat可以提供更丰富的IO性能状态数据。 1. 基本使用 $iosta...
  • wzyzzu
  • wzyzzu
  • 2015年03月11日 18:40
  • 1356

高级DBA之路——《SQL Server 监控和诊断》

编写各大终端的程序员常常有“SQL语言很简单,DBA工作很轻松”的错觉,用惯了SQLite及其扩展框架OrmLite和GreenDAO的Android程序员更是如此,尤其当一个Android程序员看见...
  • dongfeng9ge
  • dongfeng9ge
  • 2016年11月21日 23:28
  • 1003

linux网络诊断工具

这篇文章收集了久经考验靠谱的命令,也收集了几个比较新的命令。多数命令都可以在图形桌面执行,即使是没什么终端使用经验的Linux用户也会常常执行命令来使用ping或是其它的网络诊断工具。 1.curl...
  • ruiyiin
  • ruiyiin
  • 2014年05月25日 23:18
  • 1098

利用jdk自带的运行监控工具JConsole观察分析Java程序的运行

一、JConsole是什么     从Java 5开始 引入了 JConsole。JConsole 是一个内置 Java 性能分析器,可以从命令行或在 GUI shell 中运行。您可以轻松地使...
  • libaolin198706231987
  • libaolin198706231987
  • 2017年02月13日 21:46
  • 1249

JVM基础 之JAVA自带监控工具的介绍

JAVA自带监控工具的介绍   简单介绍java自带的监控工具,这些监控工具是jdk5.0以上才有。 JPS 用来显示本地的java进程,以及进程号。 我们可以通过它来查看我...
  • scholar_man
  • scholar_man
  • 2015年09月08日 10:43
  • 1435

Java多线程的监控分析工具(VisualVM)

在Java多线程程序运行时,多数情况下我们不知道到底发生了什么,只有出了错误的日志的时候,我们才知道原来代码中有死锁。撇开代码检查工具,我们先讨论一下利用VisualVM监控,分析我们的多线程的运行情...
  • chendc201
  • chendc201
  • 2014年04月04日 02:55
  • 2200

Java自带的GUI性能监控工具Jconsole以及JisualVM简介

1 Jconsole 1.1 简介以及连接   JConsole是一个基于JMX的GUI工具,用于连接正在运行的JVM,它是Java自带的简单性能监控工具。下面以对tomcat的监控为例,...
  • chendc201
  • chendc201
  • 2014年04月04日 02:47
  • 11989

JVM 图形化监控工具

前篇文章已经介绍了一些JDK 中自带的监控工具,但是这些工具都是基于文本界面的,无法很直观的看出程序运行的波动情况,这节就介绍一些图形化的监控工具供大家更简单容易的监控使用。         首先说几...
  • kl28978113
  • kl28978113
  • 2016年11月09日 10:52
  • 2846

网站访问速度诊断工具汇总

通过专业的网站速度测试平台,我们可以掌握各运营商各区域的访问速率,找出导致网页打不开或者加载缓慢的原因,从而调整结构,提升访问速率。如果你的网站已经购买了CDN加速服务,那可以通过专业测速平台了解各地...
  • dongnary
  • dongnary
  • 2016年01月13日 17:03
  • 1296

HouseMD, 比BTrace更实用的Java运行诊断工具

HouseMD 是一款非常敏捷的Java进程运行时的诊断调式命令行工具, 它具备安全易用高效的特点, 让它非常适合在要求严格的线上(生产)环境中使用. 特性 交互式命令行 支...
  • huoyunshen88
  • huoyunshen88
  • 2016年01月27日 14:22
  • 963
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:JAVA诊断监控工具
举报原因:
原因补充:

(最多只允许输入30个字)