`
gary_bu
  • 浏览: 43592 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

JAVA 自带jconsole 监听内存,CPU,线程

    博客分类:
  • java
 
阅读更多

最近使用JAVA 自带jconsole 监听web项目 内存,CPU,线程使用情况,感觉还蛮好的,下面介绍一下使用方法和过程

 

1.使用jconsole背景:

发现项目运行一段时间就会挂掉,最初认为是某些地方代码质量不高,导致内存泄露.打算找个内存分析工具分析一下.

2.使用过程:

 

监控本地工程:

正如 http://tomcat.apache.org/tomcat-7.0-doc/monitoring.html#Enabling_JMX_Remote所说

Note: This configuration is needed only if you are going to monitor Tomcat remotely. It is not needed if you are going to monitor it locally, using the same user that Tomcat runs with.

 

jconsole监听本地工程不需要进行配置,windows平台是命令行 运行 'jconsole' 就可以打开监听窗口了



 本地进程会自动列示出来,只需要选择后,点击 '连接' 就可以了

 

概述选项卡,你可以看到内存使用情况,线程数,类数量,以及CPU的使用情况,你也可以点击单独的选项卡查看详细情况.

VM摘要,可以看到jconsole监控多长时间了,活动线程数,垃圾收集器有哪些,物理内存以及VM参数等.

 

 

监控远程服务器:

 

服务器是Linux 系统,

首先在$TOMCAT_HOME/bin中找到Catalina.sh文件,打开文件,找到

# OS specific support.  $var _must_ be set to either true or false. 这行,在这行下面加入:

JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.port=1090 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"

  其中

 -Dcom.sun.management.jmxremote.port=1090远程监听端口.

 -Dcom.sun.management.jmxremote.ssl=false是否加密连接

 -Dcom.sun.management.jmxremote.authenticate=false是否密码访问

 

保存退出.

在设置完成之后需要重启Tomcat.此时可以采用netstat -an命令查看一下监听端口的状态.

另外需要注意的是在修改完Catalina.sh文件之后,查看一下/etc/hosts文件.是不是包含服务器真实IP地址,如果只有127.0.0.1的话,就加上,

 

 

 

hosts文件格式

ip地址   主机名/域名   (主机别名)

例如:192.168.4.141 Matata.Center localhost

 

现在配置就完成了,打开命令窗口,输入 jconsole ,选择远程进程,输入监听服务器地址:监听端口,

 

 点 '连接' 按钮,就可以监听服务器情况了

 

 

 下面说一下,解决问题的过程:

 

1.因为最初怀疑是内存泄露,所以先查看了一下内存使用情况,发现并不是太高,过一一周左右,在登陆上来查看的时候发现,内存基本保持平稳,却发现线程数有些多,达到了200多,

点击 '线程' 的选项卡,发现很多都是名字类似的线程,点击 一个线程后,从右边窗口的详情可以分析出是哪个类创建的线程,从而找到项目中的代码,修改了代码,又测试了一段时间,问题解决了.

 

思路: 模拟异常,让异常重现,通过监听查看那部分出了问题,分析异常点,找到对应的漏洞代码,修复代码.

 

 

 

  • 大小: 189.6 KB
  • 大小: 249.4 KB
  • 大小: 766.7 KB
  • 大小: 119.1 KB
  • 大小: 245.9 KB
分享到:
评论

相关推荐

    在tomcat的catalina.sh文件中添加了jconsole检测内存配置

    JConsole是Java Development Kit (JDK)自带的一个GUI工具,它可以实时地监视Java应用程序的运行状态,包括内存使用、线程、类加载、系统属性、MBean等信息。通过JConsole,开发者或运维人员可以检测到内存泄漏、CPU...

    使用jconsole监听远程Tomcat服务的方法

    通过JConsole可以观察到Java应用的各种性能指标,例如内存使用量、线程状态、类使用情况、CPU使用率等。 在监控远程Tomcat服务时,首先需要确保Tomcat服务器的JVM启动时启用了JMX。JMX(Java Management Extensions...

    jconsole监控 tomcat

    JConsole是Java自带的一款强大的可视化管理工具,它可以用来监控Java应用程序的性能和资源消耗情况,帮助开发者和运维人员及时发现并解决性能问题。本文将详细介绍如何使用JConsole来监控Tomcat服务。 首先,...

    JVM-Tunning-Tools-Introduction

    1. jconsole:提供了一个图形界面来监控JVM的性能和资源消耗,例如内存使用、线程使用情况以及类加载情况。 2. jvisualvm:是一个更为全面的监控和故障排查工具,支持多种插件,可以查看本地和远程JVM的详细性能和...

    jdk nmon jmeter nmon分析

    例如,调整JVM的堆大小、设置垃圾收集器类型、理解和使用JDK自带的JConsole或VisualVM等工具进行性能监控,都是Java开发和运维人员必备的知识。 Nmon则是系统管理员用来监控服务器性能的利器。它能够实时显示系统的...

Global site tag (gtag.js) - Google Analytics