• jvm性能监控与故障排查


    首先我们了解一下jdk有那些工具:
    jcmd命令:jcmd命令是最全面,基本涵盖所有功能的命令

     

     

    jstat:查看gc的使用情况

     

     

    jstack:查看线程使用情况

     

     

    这些大家可以一个一个敲,或者百度看详解,这边就不一一列举参数了。
    我们来看一下jdk可视化工具吧,主要是监控内存,堆,线程等数据:

    在使用可视化工具时先启动端口:jcmd pid ManagementAgent.start jmxremote.port=7777 jmxremote.rmi.port=7777 jmxremote.ssl=false jmxremote.authenticate=false

    jvisualVM:它主要用于监控内存,堆,线程等数据,启动jvisualVM:

     

     

     

     

     

     

    jmc:它的特色主要是飞行器,飞行器就是获取到一个时间段一分钟的jvm运行情况:
    在项目启动添加-XX:+UnlockCommercialFeatures -XX:+FlightRecorder命令

     

     

    启动jmc:

     

     

     

     

    工具就介绍到这里吧,大家可以自行摸索,主要工具也没啥好讲的。。。慢慢摸吧,小博主也一样需要多摸索摸索啦。

    故障排除之线程死锁问题:

    在我们日常项目运行时可能会出现系统使用很卡的情况,这个时候我们首先需要关注我们服务器cpu使用情况,查看那个进程占用cpu较大,这里我们主要是查看java程序死锁的情况,检查步骤如下:

    1:top查看进程使用情况:

     

     

    2:打印该进程下,线程使用情况:top -H -p pid

     

     

    看图中有许多的线程,但是每个线程占用的cpu又比较少,同时java进程的cpu又下不来,这个时候我们就要关注线程是否进行了死锁,这个也是比较典型的死锁问题。
    3:将线程的pid转成16进制:printf “%x\n” 27212

     

     

    4:使用jstack命令将线程使用情况输入到文件中:jstack -l 26416 >> a.log

    5:打卡日志:vim a.log

     

     

    整体线程死锁排查结束

    故障排除之gc内存溢出问题:

    除了线程死锁以外,我们还可能因为各种原因导致gc内存溢出,那么我们可以在启动jar时添加命令:-XX:+
    HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=路径 在内存溢出时,将日志文件输出到指定路径,然后我们可以通过各种工具进行gc内存溢出进行排查了,我这边使用的是Jprofile工具查看class类使用情况,结合进行gc回收查看进行排查。

  • 相关阅读:
    VMware Workstation 15 安装教程
    Kail更新源、输入法、浏览器
    Kali Linux 下载、引导、安装
    dwr超时
    jsp获取web的跟路径
    java线程安全
    jsp快速回顾
    在web.xml中可以设置jsp标签吗?
    axis2--生成的wsdl文件方法的参数问题
    java删除文件
  • 原文地址:https://www.cnblogs.com/zeenzhou/p/16146023.html
Copyright © 2020-2023  润新知