jdk中自带了很多工具可以用于性能分析,位于jdk的bin目录下,jvisualvm工具可以以图形化的方式更加直观的监控本地以及远程的java进程的内存占用,线程状态等信息。

一、配置tomcat

  在tomcat的 catalina.sh 文件开头加上如下配置  :

JAVA_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9999 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=192.168.184.129 -Dcom.sun.management.jmxremote.rmi.port=9999"

  各参数含义:

   -Dcom.sun.management.jmxremote :是否支持远程JMX访问,默认true;

   -Dcom.sun.management.jmxremote.port :是JMX远程监控端口号,需要在防火墙开放该端口;

   -Dcom.sun.management.jmxremote.ssl=false :表示是否对连接开启SSL加密,默认开启;

     -Dcom.sun.management.jmxremote.authenticate=false   :是否需要开启用户认证,默认开启,如果开启需要额外配置授权文件;

   -Djava.rmi.server.hostname=192.168.184.129 :远程服务器的主机名;

   -Dcom.sun.management.jmxremote.rmi.port= :RMI端口号,JMX在远程连接时,会随机开启一个RMI端口作为连接的数据端口,可以和JMX端口号相同。

二、配置主机名

  使用 hostname -i 命令查看主机名是否为外网访问ip  192.168.184.129  :

[root@localhost bin]# hostname -i
127.0.0.1 127.0.0.1

  发现是127.0.0.1,所以需要修改主机名为 192.168.184.129 。

(1)修改  /etc/sysconfig/network  文件

  原文件内容为:

[root@localhost bin]# cat /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=localhost.localdomain

  修改 HOSTNAME 为 192.168.184.129 ,即修改后内容为:

[root@localhost bin]# cat /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=192.168.184.129

  修改后使用 service network restart 命令重启网络服务。

(2)修改 /etc/hosts 文件

  原文件内容为:

[root@localhost bin]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
:: localhost localhost.localdomain localhost6 localhost6.localdomain6

  修改 127.0.0.1 为 192.168.184.129 ,并删除第二行ipv6的配置,即修改后文件内容为:

[root@localhost bin]# cat /etc/hosts
192.168.184.129 localhost localhost.localdomain localhost4 localhost4.localdomain4

  此时使用 hostname -i 命令再次查看主机名,已经修改过来了:

[root@localhost bin]# hostname -i
192.168.184.129

三、配置防火墙

  配置防火墙开放9999端口,编辑 /etc/sysconfig/iptables 文件,加入 -A INPUT -m state --state NEW -m tcp -p tcp --dport -j ACCEPT ,然后 service iptables restart 重启防火墙服务。

四、配置jvisualvm

  启动tomcat后,在windows本地jdk安装路径bin目录下找到 jvisualvm.exe ,双击打开后左侧显示如下:

在“远程”上右键-->添加远程主机-->填写主机名:

点击确定后,远程选项下多了一条刚才添加的主机列表。右键-->添加JMX连接,如下图,填入JMX远程连接端口号  ,并勾选“不要求ssl连接”:

点击确定后,左侧多了一条pid为6822的远程连接,6822是远程tomcat的pid:

双击该连接,在右侧可以动态查看jvm的概览信息,监控CPU,java堆,元空间,类,线程等数据:

五、常见问题

  在添加JMX连接的时候,经常会出现如下报错:

此时可以从以下几个方向检查:

(1)检查tomcat应用是否启动,或者修改tomcat配置后是否重启tomcat,确保9999端口处于监听状态,查看命令 netstat -nl|grep  ;

(2)检查主机名是否和tomcat中配置的主机名相同,如果不同则按照第二步修改主机名;

(3)检查RMI端口号端口号是否在防火墙进行了配置,如果配置的RMI端口号和JMX端口号不一致,需要在防火墙配置RMI端口号允许访问,如果没有配置,则添加 -Dcom.sun.management.jmxremote.rmi.port= 配置RMI端口号。

  

Java虚拟机二:使用jvisualvm工具远程监控tomcat内存的更多相关文章

  1. 使用JMX工具远程监控tomcat配置

    使用JMX工具远程监控tomcat,在tomcat启动时添加配置参数: -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.po ...

  2. 远程监控tomcat内存使用

    边界远程Tomcat服务器的Tomcat配置文件,如下: vi /etc/init.d/tomcatd8_test export JAVA_OPTS="-Xms1024m -Xmx4056m ...

  3. 使用jvisualvm远程监控tomcat(阿里云ECS)

    写在前面:  使用jvisualvm远程监控tomcat(阿里云ECS),连接是报错:service:jmx:rmi:////jndi/rmi:IP:端口//  连接到 IP:端口,网上找了很多资料, ...

  4. 用JMX远程监控Tomcat

    要通过JMX远程监控Tomcat,首先需要进行Tomcat的JMX远程配置. 注意:此配置添加在catalina.bat文件开头的注释行(rem)后面即可. 不需鉴权的配置: 先修改Tomcat的启动 ...

  5. 深入理解Java虚拟机之读书笔记四 性能监控与故障处理工具

    JDK的bin目录下存在很多有效的命令行工具,它们就是jdk\lib\toos.jar类库的封装. 一.jps:虚拟机进程状况工具,查询出LVMID. 二.jstat:虚拟机统计信息监视工具, 三.j ...

  6. 使用jvisualvm工具来监控java运行情况

    jvisualvm是jdk自带的工具.所以要先安装jdk   1.jvisualvm工具的路径: 通过which jvisualvm来查看 /usr/local/jdk1.7.0_79/bin/jvi ...

  7. jvisualvm远程监控Tomcat

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

  8. JvisualVm添加远程监控

    一.Weblogic远程监控 1.首先需要在远程的weblogic的域下面,找到/bin/ setDomainEnv.sh ,需要在此文件下加入如下内容: -Dcom.sun.management.j ...

  9. java虚拟机(二)--类加载机制和双亲委派模型

    一.类的生命周期 加载(Loading).验证(Verification).准备(Preparation).解析(Resolution).初始化(Initialization).使用(Using).卸 ...

随机推荐

  1. 免费Git客户端:sourcetree详细介绍

    一.简介:一个用于Windows和Mac的免费Git客户端.Sourcetree简化了如何与Git存储库进行交互,这样您就可以集中精力编写代码.通过Sourcetree的简单Git GUI可视化和管理 ...

  2. SSH学习之路(一).Net开发与Java Web开发

    摘要:一直再使用.net mvc5开发,期间学习过java web相关的知识,现如今想要进阶一下便开始学习ssh框架. 1..net web开发 对于微软的东西,开发者考虑的东西不需要太多,你新建一个 ...

  3. git进阶

    一.刚提交的代码,发现需要微调一下 刚刚最新提交了一段代码,然后跟前端说,接口好了.过了2分钟,前端跟你说,哎,兄弟,那个金额能不能返回整数,不要小数点. 这个时候一般我们通常会修改一下之后,再提交一 ...

  4. C/C++ 数据结构之算法

    数据结构中的排序算法. 排序算法的相关知识: (1)排序的概念:所谓排序就是要整理文件中的记录,使之按关键字递增(或递减)次序排列起来. (2)稳定的排序方法:在待排序的文件中,若存在多个关键字相同的 ...

  5. Mybatis夺标关联查询一对多实例

    <?xml version="1.0" encoding="UTF-8" ?>  <!DOCTYPE mapper PUBLIC " ...

  6. Java并发包之同步队列SynchronousQueue理解

    1 简介 SynchronousQueue是这样一种阻塞队列,其中每个put必须等待一个take,反之亦然.同步队列没有任何内部容量,甚至连一个队列的容量都没有.不能在同步队列上进行peek,因为仅在 ...

  7. mysql分表经验总结

    一.为什么要分表? 当一张的数据达到几百万时,你查询一次所花的时间会变多,如果有联合查询的话,有可能会死在那儿了.分表的目的就在于此,减小数据库的负担,缩短查询时间.根据个人经验,mysql执行一个s ...

  8. RabbitMQ (四) 路由选择 (Routing)

    上一篇博客我们建立了一个简单的日志系统,我们能够广播日志消息给所有你的接收者,如果你不了解,请查看:RabbitMQ (三) 发布/订阅.本篇博客我们准备给日志系统添加新的特性,让日志接收者能够订阅部 ...

  9. Python中从SQL型数据库读写dataframe型数据

    Python的pandas包对表格化的数据处理能力很强,而SQL数据库的数据就是以表格的形式储存,因此经常将sql数据库里的数据直接读取为dataframe,分析操作以后再将dataframe存到sq ...

  10. Linux.Centos6编译安装nginx

    环境 系统环境:CentOS release 6.7 (Final) 需求 centos6.7编译安装nginx1.x 准备 安装依赖 yum install -y gcc gcc-c++ autoc ...