zoukankan      html  css  js  c++  java
  • JVM学习十二:JVM之性能监控工具

    前面我们学习了很多JVM相关的理论知识,那么本节将重点讲述的是工具的使用,正所谓:工欲善其事,必先利其器。因此,本节介绍常用的性能监控工具,用于性能监控和问题排查。

    一、系统性能监控

    系统性能工具用于确定系统运行的整体状态,基本定位问题所在。

    Linux

    – uptime

     

    • 系统时间

    • 运行时间

    n 例子中为7分钟

    • 连接数

    n 每一个终端算一个连接

    • 1,5,15分钟内的系统平均负载

    n 运行队列中的平均进程数

    – Top

     

    • 第一行同uptime

    • 第三行到第五行是CPU和内存的使用情况

    • 图中下面的列表是每个进程使用CPU的情况

    • 可以知道哪个程序占CPU最多

    – vmstat

    • 可以统计系统的CPU,内存,swap,io等情况

     

    • 例子中的参数1为采样频率,4为采样次数

    • 本例子说明CPU占用率很高,上下文切换频繁,说明系统有线程正在频繁切换

    – pidstat

    • 细致观察进程

    • 需要安装

    n sudo apt-get install sysstat

    • 监控CPU

    • 监控IO

    • 监控内存

     

     

    Windows

    – 任务管理器

     

    – Perfmon

    Windows自带多功能性能监控工具

     

     

    – pslist

    n 命令行工具

    n 可用于自动化数据收集

    n 显示java程序的运行情况

     

     

    二、JAVA自带工具

       

    jps
    –列出java进程,类似于ps命令
    –参数-q可以指定jps只输出进程ID ,不输出类的短名称
    –参数-m可以用于输出传递给Java进程(主函数)的参数
    –参数-l可以用于输出主函数的完整路径
    –参数-v可以显示传递给JVM的参数
     

       

     

     

    jinfo
    –可以用来查看正在运行的Java应用程序的扩展参数,甚至支持在运行时,修改部分参数
    –-flag <name>:打印指定JVM的参数值
    –-flag [+|-]<name>:设置指定JVM参数的布尔值
    –-flag <name>=<value>:设置指定JVM参数的值
     

     

    jmap
    –生成Java应用程序的堆快照和对象的统计信息
    –jmap -histo 2972 >c:s.txt
    Dump堆
    jmap -dump:format=b,file=c:heap.hprof 2972
    jstack
    –打印线程dump
    –-l 打印锁信息
    –-m 打印java和native的帧信息
    –-F 强制dump,当jstack没有响应时使用
     
    jstack 120 >>C:a.txt
    JConsole
    –图形化监控工具
    –可以查看Java应用程序的运行概况,监控堆信息、永久区使用情况、类加载情况等
     

    Visual VM
    –Visual VM是一个功能强大的多合一故障诊断和性能监控的可视化工具

    性能监控:找到占用CPU时间最长的方法

    三、实战分析

    运行一程序ThreadBlockMain,期望输出Hello,World ,结果在程序运行后,程序卡死,没有预期输出。
     
    Java程序HoldCPUMain运行后,发现占用CPU很高,希望能找到原因。

     

    死锁
    如何从jstack的输出中找出死锁
     

     

    输出最后的总结
     

    参考文献:

    葛一鸣《深入JVM内核》视频学习

  • 相关阅读:
    python day6 面向对象
    搭建简单的Habernate环境(一)
    Team Services 自动化部署项目
    Java 反射机制
    Java io 操作
    基于Socket的Winform例子
    在.NetCore2.0中使用Swagger
    [Python]mysql-python 安装错误 fatal error C1083: Cannot open include file: 'config-win.h': No such file or directory
    [Python]Python入坑小项目推荐- Flask example minitwit
    [linux]服务器apache配置vhost
  • 原文地址:https://www.cnblogs.com/pony1223/p/9206585.html
Copyright © 2011-2022 走看看