最近项目已经要提测了,有时间来考虑一些性能上的事儿了。之前拜读过《深入理解java虚拟机》,只可惜当时功力尚浅,有些东西还是不太懂,而且应用场景也没有,所以借这次机会看看。当然了,这次并不包含什么深入的技术内容,只是使用VisualVM来连接远程的Tomcat,先摆好姿势。

VisualVM

VisualVm是一个将很多JDK命令工具可视化的windows程序,直接下载解压就可以使用(如果安装了JDK的话,在JDKbin目录下就有)。可以安装很多插件,在工具>插件里面查找。先来一张图瞅瞅

看到这些图形化的信息还是很激动的,这样学习JVM就可以对照着来了

远程监控

要对Tomcat远程监控,需要对远端的Tomcat和JDK进行配置

修改IP

我使用的Linux,使用hostname -i 查看ip是否为自己的外网IP(如果你仅仅是内网,是内网的IP,但不能是127.0.0.1或者localhost)

  1. # localhost是本地环回地址,lack为机器名,将localhost修改为对应ip
  2. # 如:10.10.23.10 lack
  3. localhost lack

通过jstatd启动RMI

要通过远程访问jstatd需要进行授权,在JAVA_HOME/bin目录下创建jstatd.all.policy文件,内容如下:

  1. grant codebase "file:${java.home}/../lib/tools.jar" {
  2. permission java.security.AllPermission;
  3. };

注意空格,最好直接复制。使用以下命令启动jstatd(注意:要在JAVA_HOME/bin目录下运行该命令)

  1. jstatd -J-Djava.security.policy=jstatd.all.policy &

这个时候在VisualVM里面的远程连接上右键->添加远程主机,输入IP就可以看到Jstatd了

配置JMX管理Tomcat

默认Tomcat只可以从本地使用JMX,进行远程管理需要进行以下配置。打开Tomcat下的bin/catalina.sh(windows下为bat)文件,在一堆注释后面添加一行

  1. JAVA_OPTS=-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9999 -Dcom.sun.management.jmxremote.authenticate=false - Dcom.sun.management.jmxremote.ssl=false

然后在VisualVM里面右键添加JMX连接,输入IP和端口号9999(端口号可以自定义,但是必须保证没有被占用!!!)

好滴,到此就配置完成了,接下来说说上面几个参数的意义:

  1. -Dcom.sun.management.jmxremote :允许使用JMX远程管理
  2. -Dcom.sun.management.jmxremote.port=9008 JMX远程连接端口
  3. -Dcom.sun.management.jmxremote.authenticate=false :不进行身份认证,任何用户都可以连接
  4. -Dcom.sun.management.jmxremote.ssl=false :不使用ssl

不使用ssl就勾选最后一个“不要求ssl连接”,因为没有身份证,所以也不勾选使用安全凭证。但是如果连接的是公网上的Tomcat,那么就要注意安全性了,接下来看看使用用户名和密码连接

依然是在catalina.sh里面,设置JAVA_OPTS

  1. JAVA_OPTS='-Xms128m -Xmx256m -XX:MaxPermSize=128m
  2. -Djava.rmi.server.hostname=10.10.23.10
  3. -Dcom.sun.management.jmxremote.port=9999
  4. -Dcom.sun.management.jmxremote.ssl=false
  5. -Dcom.sun.management.jmxremote.authenticate=true
  6. -Dcom.sun.management.jmxremote.password.file=/usr/java/default/jre/lib/management/jmxremote.password
  7. -Dcom.sun.management.jmxremote.access.file=/usr/java/default/jre/lib/management/jmxremote.access'
  1. /usr/java/default/jre/lib/management/jmxremote.password和/usr/java/default/jre/lib/management/jmxremote.access是两个文件(在JAVA_HOME\jre\lib\management下有模板),以下分别编辑两个文件
  1. # /usr/java/default/jre/lib/management/jmxremote.password
    #(123456、123456789为密码)
  1. monitorRole 123456
    controlRole 123456789
  1. # /usr/java/default/jre/lib/management/jmxremote.access
  2. monitorRole readonly
  3. controlRole readwrite

新建完成这两个文件要修改jmxremote.password的权限

  1. chmod 600 jmxremote.password

接下来就可以远程连接了


以上内容有参考: http://www.blogjava.net/titanaly/archive/2012/03/20/372318.html  ,非常感谢 Energy of Love ,如果作者看到有不恰当或者侵权行为请联系本人。

VisualVM远程连接Tomcat的更多相关文章

  1. VisualVM远程连接Tomcat(转)

    转自:http://www.cnblogs.com/sunshine-2015/p/5547128.html VisualVM VisualVm是一个将很多JDK命令工具可视化的windows程序,直 ...

  2. 3 - JVM随笔分类(gc.log ,VisualVM插件介绍,VisualVM远程连接方式介绍)

    gc.log 354.2 KB 对于对应用的监控上可以使用Jdk自带的VisualVM来做可视化监控,可以查看当前服务应用进程的堆大小的走向,以及类的加载数量等,除此之外,VisualVM可以支持很多 ...

  3. IntelliJ IDEA远程连接tomcat,实现单步调试

    web项目部署到tomcat上之后,有时需要打断点单步调试,如果用的是Intellij idea,可以通过如下方法实现: 开启debug端口,启动tomcat 以tomcat7.0.75为例,打开bi ...

  4. 【监控】jvisualvm之jmx远程连接 tomcat war启动应用

    一.tomcat相应jmx配置 1.在tomcat bin目录下的catalina.sh文件中添加如下配置: CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun. ...

  5. linux 安装jdk,tomcat 配置vsftp 远程连接

    不知不觉入行也有一年了,这两天在公司上班有空了就自己装了个vmware虚拟机,装了个红帽6.1完全命令行的操作系统,想着搭个公司现在在用的测试环境,没想到中间碰到了很多问题,不过大部分都解决了,现在可 ...

  6. Intellij idea远程debug连接tomcat,实现单步调试

    转载:http://blog.csdn.net/boling_cavalry/article/details/73384036 web项目部署到tomcat上之后,有时需要打断点单步调试,如果用的是I ...

  7. jProfiler远程连接Linux监控jvm、tomcat运行状态

    第一步.下载软件 官网地址:https://www.ej-technologies.com/download/jprofiler/files , Mac客户端 GUI界面 Linux服务端 第二步.安 ...

  8. JConsole远程连接配置

    JConsole远程连接还是有一点坑的.这里记录一下配置过程,好记性不如烂笔头. 1.在远程机的tomcat的catalina.sh中加入配置: JAVA_OPTS="$JAVA_OPTS ...

  9. jvisualvm远程监控Tomcat

    网上已经有很多这方面的资料,但有些很杂乱,这里做了整理总结. 一.Java VisualVM 概述 对于使用命令行远程监控jvm 太麻烦 . 在jdk1.6 中 Oracle 提供了一个新的可视化的. ...

随机推荐

  1. Python Day 7

    阅读目录 内容回顾: 数据类型相互转换: 字符编码: ##内容回顾 #1.深浅拷贝 ls = [1, 'a', [10]] 值拷贝:直接赋值 ls1 = ls, ls中的任何值发生改变,ls1中的值都 ...

  2. 语音端点检测(Voice Activity Detection,VAD)

    本文内容均翻译自这篇博文:(该博主的相关文章都比较好,感兴趣的可以自行学习) Voice Activity Detection(VAD) Tutorial 语音端点检测一般用于鉴别音频信号当中的语音出 ...

  3. java下载Excel模板(工具类)

    一次文件下载记录 一次不成熟的文件下载操作记录,希望能对需要的人有所帮助. 1.前端代码 $("#downloadModel").click(function(){ var mod ...

  4. Apple Mach-O Linker Error Group 与 "_OBJC_CLASS_$_XXXXXX", referenced from: 和 clang: error: linker command failed with exit code 1 (use -v to see invocation) 问题.

    此问题为链接报错,在Build Settings中的Other Linker Flags添加:-l"XXXXXX"

  5. sftp修改用户home目录后登录时报connection closed by remote host

    在sftp用户需要修改登录根目录的情况下,我们可以修改/etc/ssh/sshd_config文件中ChrootDirectory /home/[path]的路径. 但是,在重启sshd服务后,sft ...

  6. 20145232韩文浩《网络对抗》逆向及BOF基础实践

    实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串. 该程序同时包含另一个代码片段,getShe ...

  7. 第4周小组作业:WordCount优化

     Github项目地址:https://github.com/chaseMengdi/wcPro stage1:代码编写+单元测试 PSP表格 PSP2.1 PSP阶段 预估耗时(分钟) 实际耗时(分 ...

  8. poj 1026

    这题一开始没看清楚 等级差距不超过1 1->2->3 就是错误的,因为3-1==2 ,意思是间接的也不行 其次等级最小是1,最大是n 你要到达1号首领的位置 假设1号等级x,限制m,最大上 ...

  9. day_9内存管理

    复习 '''文件处理​1.操作文件的三步骤 -- 打开文件:硬盘的空间被操作系统持有 | 文件对象被应用程序持续 -- 操作文件:读写操作 -- 释放文件:释放操作系统对硬盘空间的持有 2.基础的读写 ...

  10. ASP.NET Core MVC 源码学习:详解 Action 的匹配

    前言 在 上一篇 文章中,我们已经学习了 ASP.NET Core MVC 的启动流程,那么 MVC 在启动了之后,当请求到达过来的时候,它是怎么样处理的呢? 又是怎么样把我们的请求准确的传达到我们的 ...