博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
读书笔记之《实战Java虚拟机》(6):性能监控工具
阅读量:7065 次
发布时间:2019-06-28

本文共 6950 字,大约阅读时间需要 23 分钟。

Linux下的性能监控工具

显示系统整体资源使用情况 —— top 命令

top - 19:55:08 up 22 days,  3:12,  1 user,  load average: 0.01, 0.08, 0.07Tasks:  77 total,   1 running,  76 sleeping,   0 stopped,   0 zombie%Cpu(s):  1.3 us,  0.7 sy,  0.0 ni, 97.0 id,  1.0 wa,  0.0 hi,  0.0 si,  0.0 stKiB Mem :  1016380 total,    76076 free,   864172 used,    76132 buff/cacheKiB Swap:        0 total,        0 free,        0 used.    35740 avail Mem  PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND  579 root      20   0  586424  42072    148 S  0.3  4.1  32:11.25 YDService 2051 root      20   0  741344  10944   1456 S  0.3  1.1  72:05.36 barad_agent11108 root      20   0  143948   1260    220 S  0.3  0.1  20:35.96 redis-server23059 mysql     20   0 1421440 411764      0 S  0.3 40.5  19:36.60 mysqld    1 root      20   0   41048   2316   1180 S  0.0  0.2   1:14.65 systemd    2 root      20   0       0      0      0 S  0.0  0.0   0:00.12 kthreadd    ... ...复制代码

分为上下两部分:前半部分是系统统计信息,后半部分是进程信息。

使用top命令可以从宏观上观察系统各个进程堆 CPU 的占用情况,以及内存使用情况。

监控内存和 CPU —— vmstat 命令

procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st 1  0      0  78252    544  75832    0    0   227    18   18   12  1  0 99  0  0复制代码

可以指定采样周期和采样次数,例每秒采样 1 次,共 3 次:vmstat 1 3

vmstat 工具可以查看内存、交互分区、I/O 操作、上下文切换、时钟中断,以及 CPU 的使用情况。

监控 IO 使用 —— iostat 命令

Linux 3.10.0-514.26.2.el7.x86_64 (VM_0_6_centos) 	03/22/2019 	_x86_64_	(1 CPU)avg-cpu:  %user   %nice %system %iowait  %steal   %idle           0.55    0.00    0.40    0.36    0.00   98.70Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtnscd0              0.00         0.00         0.00        316          0vda               6.52       228.32        18.13  435180743   34554796复制代码

同样可指定采样周期和采样次数。

磁盘 I/O 很容易成为系统性能瓶颈,通过 iostat 可以快速定位系统是否产生了大量的 I/O 操作。

多功能诊断器 —— pidstat 工具

pidstat -p 29839 -u 1 3, -u 指定对 CPU 使用监控;

Linux 3.10.0-514.26.2.el7.x86_64 (VM_0_6_centos) 	03/22/2019 	_x86_64_	(1 CPU)08:22:50 PM   UID       PID    %usr %system  %guest    %CPU   CPU  Command08:22:51 PM     0     29839    0.00    0.00    0.00    0.00     0  java08:22:52 PM     0     29839    0.00    0.00    0.00    0.00     0  java08:22:53 PM     0     29839    0.00    0.00    0.00    0.00     0  javaAverage:        0     29839    0.00    0.00    0.00    0.00     -  java复制代码

pidstat -p 29839 -d 1 3, -d 指定对 I/O 使用监控;

Linux 3.10.0-514.26.2.el7.x86_64 (VM_0_6_centos) 	03/22/2019 	_x86_64_	(1 CPU)08:26:12 PM   UID       PID   kB_rd/s   kB_wr/s kB_ccwr/s  Command08:26:13 PM     0     29839      0.00      0.00      0.00  java08:26:14 PM     0     29839      0.00      0.00      0.00  java08:26:15 PM     0     29839      0.00      0.00      0.00  javaAverage:        0     29839      0.00      0.00      0.00  java复制代码

pidstat -p 29839 -r 1 3, -d 指定对 内存 使用监控;

Linux 3.10.0-514.26.2.el7.x86_64 (VM_0_6_centos) 	03/22/2019 	_x86_64_	(1 CPU)08:27:34 PM   UID       PID  minflt/s  majflt/s     VSZ    RSS   %MEM  Command08:27:35 PM     0     29839      0.00      0.00 2359408 316676  31.16  java08:27:36 PM     0     29839      0.00      0.00 2359408 316676  31.16  java08:27:37 PM     0     29839      0.00      0.00 2359408 316676  31.16  javaAverage:        0     29839      0.00      0.00 2359408 316676  31.16  java复制代码

pidstat 工具是一款多合一的优秀工具。它不仅可以监控 CPU、I/O 和内存资源,甚至可以将问题定位到相关线程,方便应用程序的故障排查。

Windows 下的性能监控工具

任务管理器

在桌面底边栏右键单击,或者通过 Ctrl + Alt + Del 组合件呼出。

任务管理器很常用,也非常强大,它可以显示系统的网络负载、任意进程的 CPU 占用率、内存使用量以及 I/O 使用情况。

perfmon 性能监控工具

可以在开始菜单的“运行”对话框中使用 perfmon 命令,或者双击控制面板的管理工具中的“性能监视器”打开这个工具;

perfmon 工具也是 Windows 自带的一款性能监控软件。可以监控的性能指标繁多,功能也非常强大。当任务管理无法满足要求时,推荐使用。

perfmon 工具支持带参数 /res 启动,用于专门监控系统资源的使用情况:perfmon /res

JDK 性能监控工具

查看 Java 进程 —— jps 命令

jps 类似 linux 下的 ps,但它只用于列出 Java 的进程。

[root@VM_0_6_centos ~]# jps28646 Jps29839 jar复制代码

查看虚拟机运行时信息 —— jstat 命令

jstat 用于观察 Java 应用程序运行时相关信息的工具。基本语法为:

jstat -
  • 选项 option 可以由下列值构成:

    • -class:显示 ClassLoader 的相关信息
    • -compiler:显示 JIT 编译的相关信息
    • -gc:显示与 GC 相关的堆信息
    • -gccapacity:显示各个代的容量及使用情况
    • -gccause:显示垃圾收集相关信息,同时显示最后一次或当前正在发生的垃圾手机的诱发原因
    • -gcnew:显示新生代信息
    • -gcnewcapacity:显示新生代大小与使用情况
    • -gcold:显示老年代信息
    • -gcoldcapacity:显示老年代的大小
    • -gcpermcapacity:显示永久代的大小
    • -printcompilation:输出 JIT 编译的方法信息
  • -t 参数可以在输出信息前加上一个 Timestamp 列,显示程序的运行时间

  • -h 参数可以周期性输出时,输出多少行数据后,跟着输出一个表头信息

  • interval 参数指定统计数据的周期,单位为毫秒

  • count 用于指定一共输出多少次数据

查看 GC 相关的对信息输出

[root@VM_0_6_centos ~]# jstat -gc 29839 S0C    S1C    S0U    S1U      EC       EU        OC         OU       MC     MU    CCSC   CCSU   YGC     YGCT    FGC    FGCT     GCT   4352.0 4352.0  0.0   1614.1 34816.0   3974.8   86828.0    74678.7   67632.0 64592.8 8240.0 7731.2    405    1.665   6      0.521    2.187复制代码

查看虚拟机参数 —— jinfo 命令

jinfo 查看正在运行的 Java 应用程序的拓展参数,甚至支持在运行时,修改部分参数,基本语法为:

jinfo 

其中 option 可以为以下信息:

  • -flag:打印指定 Java 虚拟机的参数值
  • -flag[+|-]:设置指定 Java 虚拟机参数的布尔值
  • -flag=:设置指定 Java 虚拟机参数的值

例如查看当前新生代对象晋升到老年代对象的最大年龄;

[root@VM_0_6_centos ~]# jinfo -flag MaxTenuringThreshold 29839-XX:MaxTenuringThreshold=15复制代码

导出堆到文件 —— jmap 命令

查看虚拟机状态;

[root@VM_0_6_centos ~]# jmap -heap 29839Attaching to process ID 29839, please wait...Debugger attached successfully.Server compiler detected.JVM version is 25.201-b09using thread-local object allocation.Mark Sweep Compact GCHeap Configuration:   MinHeapFreeRatio         = 40   MaxHeapFreeRatio         = 70   MaxHeapSize              = 262144000 (250.0MB)   NewSize                  = 5570560 (5.3125MB)   MaxNewSize               = 87359488 (83.3125MB)   OldSize                  = 11206656 (10.6875MB)   NewRatio                 = 2   SurvivorRatio            = 8   MetaspaceSize            = 21807104 (20.796875MB)   CompressedClassSpaceSize = 1073741824 (1024.0MB)   MaxMetaspaceSize         = 17592186044415 MB   G1HeapRegionSize         = 0 (0.0MB)Heap Usage:New Generation (Eden + 1 Survivor Space):   capacity = 40108032 (38.25MB)   used     = 7851408 (7.4876861572265625MB)   free     = 32256624 (30.762313842773438MB)   19.57565008425245% usedEden Space:   capacity = 35651584 (34.0MB)   used     = 6198592 (5.91143798828125MB)   free     = 29452992 (28.08856201171875MB)   17.386582318474264% usedFrom Space:   capacity = 4456448 (4.25MB)   used     = 1652816 (1.5762481689453125MB)   free     = 2803632 (2.6737518310546875MB)   37.08819221047794% usedTo Space:   capacity = 4456448 (4.25MB)   used     = 0 (0.0MB)   free     = 4456448 (4.25MB)   0.0% usedtenured generation:   capacity = 88911872 (84.79296875MB)   used     = 76470984 (72.92841339111328MB)   free     = 12440888 (11.864555358886719MB)   86.00761887006496% used26446 interned Strings occupying 3202672 bytes.复制代码

图形化虚拟机监控工具 JConsole

JConsole 工具是 JDK 自带的图形化性能监控工具,位于 %JAVA_HOME%/bin 目录下,启动如下图所示;

连接上 Java 应用程序后,便可以查看应用程序概况;

酷炫诊断工具 Mission Control

Mission Control 位于 %JAVA_HOME%/bin 目录下,连接 Java 程序后;

转载于:https://juejin.im/post/5c94cb8cf265da60c6038cca

你可能感兴趣的文章
2018云栖大会分享(多图)
查看>>
python爬取糗事百科
查看>>
Java 创建文件
查看>>
Effective Java笔记(不含反序列化、并发、注解和枚举)
查看>>
Apache Tomcat 9.0.19 发布,开源 Web 应用服务器
查看>>
Fedora 31 将更新开源 .Net 框架,支持 Mono 5
查看>>
dubbo之基础应用
查看>>
javax.persistence.RollbackException: Transaction marked as rollbackOnly Ask
查看>>
基于友盟的第三方登录
查看>>
工程师男友如何反窃听?趣聊密码学入门科普
查看>>
Memcached服务级调优
查看>>
TensorFlow中那些鲜为人知却又极其实用的知识
查看>>
12306 售票网站新版验证码识别对抗
查看>>
Maven三种仓库详解
查看>>
使用 json-server 简单完成CRUD模拟后台数据
查看>>
在SAP云平台的CloudFoundry环境下消费ABAP On-Premise OData服务
查看>>
Gartner:2016年第四季度全球服务器收入下滑1.9%
查看>>
如何使用jMeter发送两个逻辑上相关的HTTP请求
查看>>
“新技术·新工业·新商业”第二届中国制造千人会即将起航
查看>>
windbg调试堆破坏
查看>>