Java虚拟机使用jvisualvm工具远程监控tomcat内存

 更新时间:2020年11月11日 12:03:04   作者:码农大卫  
这篇文章主要介绍了Java虚拟机使用jvisualvm工具远程监控tomcat内存,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

  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=9999:RMI端口号,JMX在远程连接时,会随机开启一个RMI端口作为连接的数据端口,可以和JMX端口号相同。

二、配置主机名

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

[root@localhost bin]# hostname -i127.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/networkNETWORKING=yesHOSTNAME=localhost.localdomain

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

[root@localhost bin]# cat /etc/sysconfig/networkNETWORKING=yesHOSTNAME=192.168.184.129

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

(2)修改/etc/hosts文件

  原文件内容为:

[root@localhost bin]# cat /etc/hosts127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4::1 localhost localhost.localdomain localhost6 localhost6.localdomain6

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

[root@localhost bin]# cat /etc/hosts192.168.184.129 localhost localhost.localdomain localhost4 localhost4.localdomain4

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

[root@localhost bin]# hostname -i192.168.184.129

三、配置防火墙

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

四、配置jvisualvm

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

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

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

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

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

五、常见问题

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

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

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

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

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • java实现选课系统

    java实现选课系统

    这篇文章主要为大家详细介绍了java实现选课系统,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-02-02
  • Java异常处理UncaughtExceptionHandler使用实例代码详解

    Java异常处理UncaughtExceptionHandler使用实例代码详解

    当一个线程由于未捕获异常即将终止时,Java虚拟机将使用thread . getuncaughtexceptionhandler()查询线程的uncaughtException处理程序,并调用处理程序的uncaughtException方法,将线程和异常作为参数传递
    2023-03-03
  • Java中redisTemplate注入失败NullPointerException异常问题解决

    Java中redisTemplate注入失败NullPointerException异常问题解决

    这篇文章主要介绍了Java中redisTemplate注入失败NullPointerException异常问题解决,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2023-08-08
  • Java 判断字符串a和b是否互为旋转词

    Java 判断字符串a和b是否互为旋转词

    本篇文章主要介绍了判断字符串a和b是否互为旋转词的相关知识,具有很好的参考价值。下面跟着小编一起来看下吧
    2017-05-05
  • 在deepin上如何使用Fleet开发SpringBoot 3.0.0项目

    在deepin上如何使用Fleet开发SpringBoot 3.0.0项目

    这篇文章主要介绍了在deepin上使用Fleet开发SpringBoot 3.0.0项目的过程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-09-09
  • Java Maven构建工具中mvnd和Gradle谁更快

    Java Maven构建工具中mvnd和Gradle谁更快

    这篇文章主要介绍了Java Maven构建工具中mvnd和Gradle谁更快,mvnd 是 Maven Daemon 的缩写 ,翻译成中文就是 Maven 守护进程,下文更多相关资料,需要的小伙伴可以参考一下
    2022-05-05
  • 一文详解如何配置MyBatis实现打印可执行的SQL语句

    一文详解如何配置MyBatis实现打印可执行的SQL语句

    在MyBatis中,动态SQL是一个强大的特性,允许我们在XML映射文件或注解中编写条件语句,根据运行时的参数来决定SQL的具体执行内容,这篇文章主要给大家介绍了关于如何配置MyBatis实现打印可执行的SQL语句的相关资料,需要的朋友可以参考下
    2024-08-08
  • Hibernate框架数据分页技术实例分析

    Hibernate框架数据分页技术实例分析

    这篇文章主要介绍了Hibernate框架数据分页技术,结合实例形式分析了Hibernate框架实现数据分页的原理,步骤与相关实现技巧,需要的朋友可以参考下
    2016-03-03
  • Kafka Producer中的消息缓存模型图解详解

    Kafka Producer中的消息缓存模型图解详解

    Kafka中消息是以Topic进行分类的,生产者生产消息,消费者消费消息,都是面向Topic的,下面这篇文章主要给大家介绍了关于Kafka Producer中消息缓存模型的相关资料,需要的朋友可以参考下
    2022-04-04
  • SpringBoot基于数据库实现定时任务过程解析

    SpringBoot基于数据库实现定时任务过程解析

    这篇文章主要介绍了SpringBoot基于数据库实现定时任务过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-12-12

最新评论