目录
  • jconsole简介
  • jconsole远程

前言:

本章节继续学习java性能优化的相关知识。重点学习什么是jconsole,以及如何使用?它能帮助我们做什么?

jconsole简介

提供JVM图形化视图,包括内存、线程、类、cpu等信息。用户可以通过jconsole工具去连接指定的jvm,监控jvm的变化。

我们可以在jdk的安装文件bin当中找到它:

java性能分析jconsole详解

双击运行会打开如下界面,上面是本地的java进程,下面是通过远程的方式连接服务器上面的java进程。

java性能分析jconsole详解

我们随便点击一个本地进程得到如下的界面:

java性能分析jconsole详解

jconsole远程

jconsole除了可以查看本地的jvm信息,还能够查看远程服务的jvm信息。前提是在远程服务启动的时候,添加下面的参数:

-Dcom.sun.management.jmxremote=true
# 服务器ip
-Djava.rmi.server.hostname=xxx.xxx.xxx.xxx
# 设置jconsole连接的端口
-Dcom.sun.management.jmxremote.port=8090
# 是否使用账号密码
-Dcom.sun.management.jmxremote.authenticate=false
# 关闭ssl
-Dcom.sun.management.jmxremote.ssl=false

如下所示:

nohup java -Dcom.sun.management.jmxremote=true -Djava.rmi.server.hostname=xxx.xxx.xxx.xxx -Dcom.sun.management.jmxremote.port=8090 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -jar -Xms1g -Xmx1g weather-forecast-0.0.1-SNAPSHOT.jar>/dev/null &

此时我们打开windows中的jconsole,进行连接:

java性能分析jconsole详解

此时我们仍然是不能连接成功的,主要原因是jmx需要的端口不知我们指定的一个,如我使用的8090,还有另外两个,使用netstat -nltp命令查看如下:

java性能分析jconsole详解

所以我们需要在防火墙除 8090 外,将这两个端口也开放,如果是云服务器就要去控制台开放对应的策略。完成上面的操作总算可以完成远程连接,对我们的jvm进行监控了。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。