问题背景
  Tomcat经常崩溃crash,想看看JVM内存使用情况,就想到了用Jconsole监控,以前只是监控本地的JVM,这次要监控远程的,遇到了不少问题。
  经过几个小时的努力,参考了众多网友的资料之后,才最终解决了这个问题。
  比较坑爹的是,网上的资料,竟然没有一个是:完美无缺的,没有一篇文章提到了“jmxremote.access”这个文件的重要性。
 
第一阶段
  找到了2种配置,是否需要输入密码。
   JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.port=60001"
   JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.authenticate=false"
   JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.ssl=false"
   
   authenticate为false,jconsole连接远程jvm时,就不需要输入用户名和密码。
   否则,要配置密码文件和密码。
   可以指定密码文件的位置
   JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.pwd.file=/root/soft/jdk7/jre/lib/management/jmxremote.password"
   
   我把这些配置放在了catalish.sh中。
   
第二阶段
   上面的配置遇到了一个问题,如果是第一次启动正常,但是当shutdown时,提示端口号被占用了。
   问题原因是,在关闭Tomcat时,也执行了Catalish中的jmxremote的端口号。
   
   解决办法:在catalish.sh文件中,判断是否为启动命令,如果是start,就设置变量,否则,就不设置。
   相关脚本:
   JAVA_OPTS="$JAVA_OPTS -Xms256m -Xmx1024m -XX:PermSize=128M -XX:MaxPermSize=256m"
101 if [ "$1" = "start" ];then
102      echo "set console";
103 #   JAVA_OPTS="$JAVA_OPTS -Xms256m -Xmx1024m -XX:PermSize=128M -XX:MaxPermSize=256m"
104     JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=60001 -Djava.rmi.server.hostname=42.96.84.84";
105     JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.authenticate=false";
106     JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.ssl=false";
107 #   JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.pwd.file=/root/soft/jdk7/jre/lib/management/jmxremote.password"
108 else
109   echo "no startup";
110 fi;
111
 
第三阶段
   上面的设置之后,可能还连接不上,需要配置“java.rmi.server.hostname”为机器的ip,比如我的是“42.96.84.84”。
   
   然后,重启Tomcat,在本地Jconsole连接远程JVM,只输入“42.96.84.84:60001”。
 
   
第四阶段
   登录使用密码,搞了几个小时,尼玛。
   
   注意问题
   1.-Dcom.sun.management.jmxremote.authenticate=true
   2.-Dcom.sun.management.jmxremote.pwd.file 指定正确的密码文件
   3.用户名及密码(参考jmxremote.password文件) monitorRole只能读,controlRole能读写 
     配置中的安全原因出错,由于密码是以明文的方式保存在:jmxremote.password中,所以对此文件只能有所有者都读取,其他人都不能读取。
 权限需要注意,600,所有者有rw权限。
   4.用户和权限其实是存在jmxremote.access中。
   千万要注意啊,网上的绝大部分资料,都没有提到这个文件的真正作用。
   我是在尝试了若干小时之后,才发现这个文件的作用,竟然是如此的大。
   有点类似于SVN配置,用户名-权限,用户名-密码,2个配置文件。
   fansunion   readonly
   admin   readwrite \
                 create javax.management.monitor.*,javax.management.timer.* \
                 unregister
 
jmxremote.password内容
fansunion  12345
admin  12345
 
   "用户名及密码(参考jmxremote.password文件) monitorRole只能读,controlRole能读写",给我很大的启发。
   为什么monitorRole和controlRole,这2个角色的权限还不一样呢,默认注释的password文件中,没有看出有啥区别呀。
   于是,我才去jmxremote.access文件看了看,最终找到了问题的症结。
   
   至此,不使用密码和使用用户名及密码,“admin”-“12345”成功登录42.96.84.84上的Tomcat使用的JVM。
   
   注意:本文中的ip、用户名、密码,仅供参考,你懂的。
   
参考资料
 
1.入门参考
 
 
3.给我很大的启发,解决用户名和密码登录问题
http://www.linuxidc.com/Linux/2015-02/113415.htm

本文永久更新链接地址http://www.linuxidc.com/Linux/2015-02/113420.htm

使用本地JConsole监控远程JVM(最权威的总结)的更多相关文章

  1. 使用本地JConsole监控远程JVM (转)

    问题背景   Tomcat经常崩溃crash,想看看JVM内存使用情况,就想到了用Jconsole监控,以前只是监控本地的JVM,这次要监控远程的,遇到了不少问题.   经过几个小时的努力,参考了众多 ...

  2. 使用本地JConsole监控远程JVM

    第一阶段 找到了2种配置,是否需要输入密码. 在 catalina.bat 文件新增如下脚本 第一种配置: rem HaoYang Set JAVA_OPTSset JAVA_OPTS=-Xms512 ...

  3. 使用jconsole监控远程JVM

    使用jconsole监控远程JVM 学习了:https://www.linuxidc.com/Linux/2015-02/113420.htm https://www.cnblogs.com/thin ...

  4. 使用Java VisualVM监控远程JVM

    我们经常需要对我们的开发的软件做各种测试, 软件对系统资源的使用情况更是不可少, 目前有多个监控工具, 相比JProfiler对系统资源尤其是内存的消耗是非常庞大,JDK1.6开始自带的VisualV ...

  5. Java VisualVM监控远程JVM

    我们经常需要对我们的开发的软件做各种测试, 软件对系统资源的使用情况更是不可少, 目前有多个监控工具, 相比JProfiler对系统资源尤其是内存的消耗是非常庞大,JDK1.6开始自带的VisualV ...

  6. 本地win下JConsole监控远程linux下的JVM

    环境:服务器端: Linux + jdk1.7.0_75 + tomcat 7本地: Win + jdk1.7.0_55 一.修改/etc/hosts文件 hostname -i 如果显示127.0. ...

  7. Spark的Straggler深入学习(1):如何在本地图形监控远程Spark的GC情况——使用java自带的jvisualvm

    一.本文的目的       Straggler是目前研究的热点,Spark中也存在Straggler的问题.GC问题是总所周知的导致Straggler的重要因素之一,为了了解GC导致的Straggle ...

  8. jconsole监控远程linux tomcat运行情况的配置 (转)

    来自:http://zhumeng8337797.blog.163.com/blog/static/100768914201242494649455/ 步骤如下: 1.编辑tomcat/bin/cat ...

  9. JConsole监控远程Tomcat服务器

    为了解决内存溢出的问题,会用到一些监视内存的工具,jconsole这个工具在jdk1.7自带了.这个工具可以查看系统的堆,非堆,线程,等等的一些整体的情况,从而可以判断出系统的一个大概的性能情况. c ...

随机推荐

  1. linux源码分析(二)-启动过程

    前置:这里使用的linux版本是4.8,x86体系. 这篇是 http://home.ustc.edu.cn/~boj/courses/linux_kernel/1_boot.html 的学习笔记. ...

  2. Net设计模式实例之建造者模式(Builder Pattern)

    一.建造者模式简介(Brief Introduction) 建造者模式(Builder Pattern),将一个复杂对象的构建与它的表示分离,使的同样的构建过程可以创建不同的表示. 建造者模式的优点是 ...

  3. 六、CsrfViewMiddleware

    CSRF(Cross-site request forgery),中文名称:跨站请求伪造,也被称为:one click attack/session riding,缩写为:CSRF/XSRF. 你这可 ...

  4. SQL Server时间粒度系列----第7节日历数据表详解

    本文目录列表: 1.时间粒度有关描述 2.时间维度有关功能函数3.日历数据表 4.日历数据表数据填充 5.总结语 6.参考清单列表   时间粒度有关描述   将该系列涉及到的时间粒度以及分钟以下的粒度 ...

  5. 五小步让VS Code支持AngularJS智能提示

    本文想通过配置VS Code来实现对AngularJS的智能提示.在一般的情况下对于在HTML页面是支持提示的.但是在js页面就不是很友好,它是记忆你之前的输入,要是之后有重复的输入,VS Code会 ...

  6. json是个啥东东

    xml 不用说 只要是搞web开发的 没听说谁不知道的 一种类似数据传输格式定义的语言 但是他却不是一个真正的轻量级的东西 其他的不说 只要传输一点很少的数据 经过他那左括号右括号 还有什么属性 一包 ...

  7. C#开发微信门户及应用(29)--微信个性化菜单的实现

    有一段时间没有接着微信的主题继续介绍里面的功能模块了,这段时间来,微信也做了不少的变化改动,针对这些特性我全面核对了一下相关的微信公众号和企业号的接口,对原有的微信API和系统管理做了全面的更新,本随 ...

  8. Java基础知识笔记(六:网络程序设计)

    一.统一资源定位地址(URL) (1)网络地址 在网络上,计算机是通过网络地址标识.网络地址通常有两种表示方法,第一种表示方法通常采用4个整数组成,例如: 166.111.4.100表示某一网站服务器 ...

  9. PowerDesigner 15设置mysql主键自动增长及基数

    PowerDesigner 15设置mysql主键自动增长及基数 1.双击标示图,打开table properties->columns,  如图点击图标Customize Columns an ...

  10. SQL Server 2012提供的OFFSET/FETCH NEXT与Row_Number()对比测试(转)

    原文地址:http://www.cnblogs.com/downmoon/archive/2012/04/19/2456451.html 在<SQL Server 2012服务端使用OFFSET ...