java自带的监控工具VisualVM(二)远程监控
ps:尝试了网上的几个网友提供的方法,始终不得其法,汇总后,终于尝试成功!将一些需要注意的细节也记录下来以后备用!
我们经常需要对我们的开发的软件做各种测试, 软件对系统资源的使用情况更是不可少, 目前有多个监控工具, 相比JProfiler对系统资源尤其是内存的消耗是非常庞大,JDK1.6开始自带的VisualVM就是不错的监控工具.
这个工具就在JAVA_HOME\bin\目录下的jvisualvm.exe, 双击这个文件就能看到一个比较直观的界面.
要进行远程监控, 本机的VisualVM就必须和远程的JVM要进行通信, Visualvm目前支持两种remote connection方式.
分别是jstatd和JMX方式: 这里主要介绍的是通过JMX方式.
JMX方式:
首先讲述需要账号密码的方式:
1.修改远程需要被监控机子的jdk配置文件;
- 进入JAVA_HOME\jre\lib\management\
- 拷贝一份jmxremote.password.template并改名为jmxremote.password到当前目录,并去掉# monitorRole QED 和 # controlRole R&D 这两行 前面的注释符号.
- 这里是设置 远程登录的账号和密码。比如默认的 账号是 monitorRole 和controlRole,其对应的密码分别是 QED和 R&D;可以自定义用户名密码,我自 定义了一个账号密码都为 root的账号。如图:

- 同时需要修改 当前目录里的jmxremote.access 文件,该文件可以控制访问权限;如图:

2.修改远程机器上需要被监控的程序的配置文件 (我这里是监控Tomcat容器内部署的应用).
修改TOMCAT_HOME/bin/catalian.sh文件;
在第一行加入如下语句:
export JAVA_OPTS="-Djava.rmi.server.hostname=192.168.2.120 -Dcom.sun.management.jmxremote.port=18999 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=true"
ps: 我需要监控的tomcat机子ip为 192.168.2.120;监控端口设置为:18999;远程认证设置(默认)为true;
当时就因为很多资料上没有 将JAVA_OPTS变量 export,导致失败了多次。
详细的参数见下面:
| 参数 | 描述 |
|---|---|
| com.sun.management.jmxremote | true / false. Default is true |
| com.sun.management.jmxremote.port | Port number. No default. |
| com.sun.management.jmxremote.ssl | true / false. Default is true. |
| com.sun.management.jmxremote.ssl.enabled.protocols | Default SSL/TLS protocol version. |
| com.sun.management.jmxremote.ssl.enabled.cipher.suites | Default SSL/TLS cipher suites. |
| com.sun.management.jmxremote.ssl.need.client.auth | true / false. Default is false |
| com.sun.management.jmxremote.authenticate | true / false.Default is true |
| com.sun.management.jmxremote.password.file | JRE_HOME/lib/management/jmxremote.password |
| com.sun.management.jmxremote.access.file | JRE_HOME/lib/management/jmxremote.access |
| com.sun.management.jmxremote.login.config | Default login configuration is a file-based password authentication |
3.重启tomcat,让配置生效。
ps: 可以用 netstat -anp| grep 18999 ,查看守护线程是否已经启动!如图:

4.VisualVM配置。
- 打开你本机命令框,输入jvisualvm,点击这个EXE文件;或者进入JAVA_HOME\bin\目录下面点击也可以!


- 右击远程,点击添加远程主机:

- 右击 192.168.2.120(远程主机),添加一个JMX链接,如图:

- 登录后状态:

ps:
不需要账号密码登录的,设置:-Dcom.sun.management.jmxremote.authenticate=false 即可。
export JAVA_OPTS="-Djava.rmi.server.hostname=192.168.2.120 -Dcom.sun.management.jmxremote.port=18999 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false" 如图:

输入端口,直接点击确定,即可登录!


ok!后面的可以参考 java自带的监控工具VisualVM一,来监控学习了!
Jstatd方法:(略)还没有试过!
参考文件:
https://segmentfault.com/a/1190000004313468
http://blog.csdn.net/lijiecong/article/details/6882267
http://blog.csdn.net/wzyzzu/article/details/50380511
java自带的监控工具VisualVM(二)远程监控的更多相关文章
- java自带的监控工具VisualVM一
转自:http://www.cnblogs.com/wade-xu/p/4369094.html 这篇总结的很不错(本人亲自操手学习),留着以后复习备用,很适合入门级的学习者: VisualVM 是一 ...
- Java 自带性能监控工具:监视和管理控制台 jconsole 的使用
1. 前言想验证你对 jvm 配的一些调优参数(比如 Xms.Xmx 等)有没有起作用吗?想不想实时监控你自定义的线程池的在实际运行时的线程个数.有没有死锁?应用出现 java.lang.OutOfM ...
- jvm监控工具jconsole进行远程监控配置
[环境] SUSE linux11 + jdk1.6 + tomcat7 [场景] 最近在做性能测试,想通过我本地(win7)上的jdk来远程监控上述服务器的jvm相关信息. [配置] 配置上述服务器 ...
- Java 自带性能监控工具:监视和管理控制台jconsole的使用
关于JConsole工具的使用请参见:http://blog.csdn.net/defonds/article/details/45064297
- Java性能监控工具:VisualVM
VisualVM是JDK自带的一款全能型性能监控和故障分析工具,包括对CPU使用.JVM堆内存消耗.线程.类加载的实时监控,内存dump文件分析,垃圾回收运行情况的可视化分析等,对故障排查和性能调优很 ...
- VisualVM连接远程Java进程
jstatd是一个RMI(Remove Method Invocation)的server应用,用于监控jvm的创建和结束,并且提供接口让监控工具(如VisualVM)可以远程连接到本机的jvms . ...
- java监控工具VisualVM
java监控工具VisualVM https://visualvm.github.io/ https://visualvm.github.io/documentation.html https://h ...
- Spark的Straggler深入学习(1):如何在本地图形监控远程Spark的GC情况——使用java自带的jvisualvm
一.本文的目的 Straggler是目前研究的热点,Spark中也存在Straggler的问题.GC问题是总所周知的导致Straggler的重要因素之一,为了了解GC导致的Straggle ...
- (转载)Java自带的GUI性能监控工具Jconsole以及JisualVM简介
原文链接:http://blog.csdn.net/chendc201/article/details/22905503 1 Jconsole 1.1 简介以及连接 JConsole是一个基于JMX的 ...
随机推荐
- 利用Readability解决网页正文提取问题
分享: 利用Readability解决网页正文提取问题 做数据抓取和分析的各位亲们, 有没有遇到下面的难题呢? - 如何从各式各样的网页中提取正文!? 虽然可以用SS为各种网站写脚本做解析, 但是 ...
- C# socket编程实践
C# socket编程实践——支持广播的简单socket服务器 在上篇博客简单理解socket写完之后我就希望写出一个websocket的服务器了,但是一路困难重重,还是从基础开始吧,先搞定C# ...
- Hadoop将本地文件复制到Hadoop文件系统
代码: package com.hadoop; import java.io.BufferedInputStream; import java.io.FileInputStream; import j ...
- 【Apache ZooKeeper】命令行zkCli.sh使用指南
ZooKeeper命令行 原文 http://blog.csdn.net/ganglia/article/details/11606807 ZooKeeper客户端 ...
- Linux下获取硬盘使用情况
Linux下获取硬盘使用情况[总结] 1.前言 在嵌入式设备中,硬盘空间非常有限,在涉及到经常写日志的进程时候,需要考虑日志的大小和删除,不然很快就硬盘写满,导致日志程序崩溃.为了捕获硬盘写满的异常场 ...
- MVC 5显示、创建、编辑、删除等功能实练
MVC 5显示.创建.编辑.删除等功能实练 在前天的学习小结中<15天学习MVC后的小结(分享经历与想法)>http://www.cnblogs.com/insus/p/3369870.h ...
- 【JS】布尔逻辑
0 是逻辑的 false 1 是逻辑的 true 空字符串是逻辑的 false null 是逻辑的 false NaN 是逻辑的 false 字符串 'false' 是逻辑的 true Boolean ...
- Django 中的 WSGI
Django 源码小剖: Django 中的 WSGI 2013-09-06 22:31 by 捣乱小子, 334 阅读, 0 评论, 收藏, 编辑 Django 其内部已经自带了一个方便本地测试的小 ...
- Python Redis 数据复制.
1 > 下载Python操作Redis的客户端 https://pypi.python.org/pypi/redis/2.7.6 下载完成后,参考该网站相关命令,执行安装. 2 > 下载 ...
- 实现Avl平衡树
实现Avl平衡树 一.介绍 AVL树是一种自平衡的二叉搜索树,它由Adelson-Velskii和 Landis于1962年发表在论文<An algorithm for the organi ...