当前位置: 首页 > news >正文

利用VisualVM监视远程JVM

VisualVM介绍

VisualVM是集成了多个JDK命令工具的一个可视化工具,它主要用来监控JVM的运行情况,可以用它来查看和浏览Heap Dump、Thread Dump、内存对象实例情况、GC执行情况、CPU消耗以及类的装载情况。
在JDK Update7之后,VisualVM作为JDK的一部分发布,但同时VisualVM也发布独立的版本。VisualVM必须运行在JDK1.6以上的VM环境下,但可以用它来监控JDK1.4以上的JVM
下载地址:http://visualvm.java.net/download.html

配置jetty------匿名

修改启动脚本:

vi /srv/jetty6/mtct

在RUN_CMD后面追加:

#指定hostname 一般情况需要重新指定hostname,否则连接不成功
-Djava.rmi.server.hostname=192.168.0.147
#指定hostname 指定端口默认:1099
-Dcom.sun.management.jmxremote.port=8899
#禁止ssl连接
-Dcom.sun.management.jmxremote.ssl=false

#禁止用户认证
-Dcom.sun.management.jmxremote.authenticate=false

另一种配置------认证配置

#指定hostname 一般情况需要重新指定hostname,否则连接不成功
-Djava.rmi.server.hostname=192.168.0.147
#指定hostname 指定端口默认:1099
-Dcom.sun.management.jmxremote.port=8899
#禁止ssl连接
com.sun.management.jmxremote.ssl=false

#开启用户认证
com.sun.management.jmxremote.authenticate=true

#认证用户名密码
-Dcom.sun.management.jmxremote.password.file=/opt/home/lichengwu/jvm/management/jmxremote.password
#访问模式
-Dcom.sun.management.jmxremote.access.file=/opt/home/lichengwu/jvm/management/jmxremote.access

注意:jmxremote.password和jmxremote.access文件只允许启动用户名对该文件拥有读写权限 ,我们服务用root启动 所以:

[root@dog:management]# chmod 600 *
[root@dog:management]# chown root:root *
[root@dog:management]# ll
total 8
-rw------- 1 root root 29 Nov 14 16:38 jmxremote.access
-rw------- 1 root root 26 Nov 14 16:38 jmxremote.password
[root@dog:management]#

如果权限设置不正确会报错:Error: Password file read access must be restricted

jmxremote.password模板:

[用户名]       [密码]
mtct          ct.meituan
test          test

jmxremote.access模板:

[用户名]      [权限]
mtct        readwrite
test        readonly

第三种配置------SSL

参考:http://download.oracle.com/javase/1.5.0/docs/guide/management/agent.html#SSL_enabled

  1. 在服务器上使用keytool创建密钥对
    keytool是java平台自带的一个密钥和证书管理工具,使用keytool创建密钥对:
    keytool -genkey -alias jetty -keystore /opt/home/lichengwu/jvm/ssl/jettyKeyStore
    

    按照提示输入相关信息(包括设定密码、姓、组织名等),这些信息是可以随便输入的,但从产品角度讲应该统一设定。输入的密码在今后操作中均需要使用。

  2. 导出公钥
    keytool -export -alias jetty -keystore /opt/home/lichengwu/jvm/ssl/jettyKeyStore -file /opt/home/lichengwu/jvm/ssl/jetty.cert
    
  3. 将公钥导入至需要运行VisualVM的机器。(我的是windows 放在 Z:\jvm\ssl\jetty.cert)
    keytool -import
     -alias jetty -keystore Z:\jvm\ssl\jettyKeyStore -file Z:\jvm\ssl\jetty.cert
    
  4. 修改jetty的启动脚本
    将-Dcom.sun.management.jmxremote.ssl="false
    "
    修改为:
    -Dcom.sun.management.jmxremote.ssl="true
    "
    ,并添加:
    -Djavax.net.ssl.keyStore=/opt/home/lichengwu/jvm/ssl/jettyKeyStore
    -Djavax.net.ssl.keyStorePassword=123456
    
  5. 使用如下参数启动VisualVM:
    VisualVM -J-Djavax.net.ssl.trustStore=Z:\jvm\ssl\jettyKeyStore
    

    监控

启动VisualVM,添加远程主机:



 输入远程主机地址:192.168.0.147



 修改端口,如果是默认端口,可可跳过



 添加JMX连接


完成后双击:


转载于:https://www.cnblogs.com/diyunpeng/p/7955715.html

相关文章:

  • 奇怪的变量名
  • 数列篇之三
  • python django
  • HTTP请求方法
  • 认识python
  • Linux学习之CentOS(四)----Linux文件属性、所有者、群组、其他组及文件权限操作简要总结...
  • smartWiki1
  • 附加作业版本控制总结报告(个人)
  • JSON - 简介
  • django-站点管理
  • 在Lua程序中使用MySQL的教程
  • ajax返回数据定义为全局变量
  • python-%操作符
  • 瓦片切图工具gdal2tiles.py改写为纯c++版本(二)
  • 更改某个用户下所有的表中的某个字段替换关键字(未优化比较慢)
  • 【Amaple教程】5. 插件
  • IE报vuex requires a Promise polyfill in this browser问题解决
  • laravel5.5 视图共享数据
  • MySQL QA
  • React 快速上手 - 07 前端路由 react-router
  • SpiderData 2019年2月25日 DApp数据排行榜
  • vue中实现单选
  • webpack入门学习手记(二)
  • 高度不固定时垂直居中
  • 前端学习笔记之原型——一张图说明`prototype`和`__proto__`的区别
  • 如何选择开源的机器学习框架?
  • 使用 @font-face
  • 微信开放平台全网发布【失败】的几点排查方法
  • 温故知新之javascript面向对象
  • 树莓派用上kodexplorer也能玩成私有网盘
  • ​linux启动进程的方式
  • # include “ “ 和 # include < >两者的区别
  • (4)事件处理——(2)在页面加载的时候执行任务(Performing tasks on page load)...
  • (Redis使用系列) SpirngBoot中关于Redis的值的各种方式的存储与取出 三
  • (第9篇)大数据的的超级应用——数据挖掘-推荐系统
  • (二)学习JVM —— 垃圾回收机制
  • (十二)springboot实战——SSE服务推送事件案例实现
  • (转)jQuery 基础
  • (转)MVC3 类型“System.Web.Mvc.ModelClientValidationRule”同时存在
  • (转)Sublime Text3配置Lua运行环境
  • (转)全文检索技术学习(三)——Lucene支持中文分词
  • .net CHARTING图表控件下载地址
  • .Net Memory Profiler的使用举例
  • .NET MVC之AOP
  • .Net Redis的秒杀Dome和异步执行
  • .NET8.0 AOT 经验分享 FreeSql/FreeRedis/FreeScheduler 均已通过测试
  • .pub是什么文件_Rust 模块和文件 - 「译」
  • .vue文件怎么使用_我在项目中是这样配置Vue的
  • [ NOI 2001 ] 食物链
  • [20160902]rm -rf的惨案.txt
  • [AI]文心一言爆火的同时,ChatGPT带来了这么多的开源项目你了解吗
  • [cogs2652]秘术「天文密葬法」
  • [CTF]php is_numeric绕过
  • [CUDA手搓]从零开始用C++ CUDA搭建一个卷积神经网络(LeNet),了解神经网络各个层背后算法原理
  • [Docker]五.Docker中Dockerfile详解