深入JVM内核原理-8.性能监控工具

1.概要

  • 系统性能监控
    • 确定系统运行的整体状态,基本定位问题所在
  • Java自带的工具
    • 查看Java程序运行细节,进一步定位问题
  • 实战分析
    • 案例问题

2.系统性能监控

  • uptime

    uptime.png
    • 系统时间
    • 运行时间
      • 例子中为7分钟
    • 连接数
      • 每一个终端算一个连接数
    • 1,5,15分钟内的系统平均负载
      • 运行队列中的平均进程数
  • top

    top.png
  • vmstat

    • 可以统计系统的CPU,内存,swap,io等情况
    vmstat.png
    • CPU占用率很高,上下文切换频繁,说明系统有线程正在频繁切换
  • pidstat

    • 细致观察进程
    • 需要安装
      • sudo apt-get install sysstat
    • 监控CPU
    • 监控IO
    • 监控内存
    pidstat.png
  • ctrl + alt + del (windows)

    任务管理器.png
  • Perfmon

    • Windows自带多功能性能监控工具
    Perfmon.png
  • Process Explorer

  • pslist

    • 命令行工具
    • 可用与自动化数据收集
    • 显示Java程序的运行情况

3.Java自带的工具

  • jps

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

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

    • 生成Java应用程序的堆快照和对象的统计信息
    • jmap -histo 2972 >c:\s.txt
    jmap.png
  • Dump堆

    • jmap -dump:format=b,file=c:\heap.hprof 16132
  • jstack

    • 打印线程dump
    • -l 打印锁信息
    • -m 打印java和native的帧信息
    • -F强制dump,当jstack没有响应时使用
  • JConsole

    • 图形化监控工具
    • 可以查看Java应用程序的运行情况,监控堆信息、永久区使用情况、类加载情况等
  • Visual VM

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

4.实战分析

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

你可能感兴趣的:(深入JVM内核原理-8.性能监控工具)