1.top 命令
实时显示系统中各个进程的资源占用状况。
top 命令的输出可以分为两个部分: 前半部分是系统统计信息, 后半部分是进程信息。
在统计信息中:
第1行是任务队列信息,它的结果等同于uptime命令。从左到右依次表示: 系统当前时间、系统运行时间、当前登录用户数。 load average表示系统的平均负载,即任务队列的平均长度,这三个值分别表示1分钟、5分钟、15分钟到现在的平均值。
第2行是进程统计信息,分别有正在运行的进程数、睡眠进程数、停止的进程数、僵尸进程数。
第3行是CPU统计信息, us 表示用户空间CPU占有率、sy表示内核空间CPU占有率、ni表示用户进程空间改变优先级的进程CPU的占有率、id表示空闲CPU占有率、wa表示等待输入输出的CPU时间百分比、hi表示硬件中断请求、si表示软件中断请求; 在Mem行中, 从左到右,依次表示物理内存总量、已使用的物理内存、空闲物理内存、内核缓冲使用量。 Swap行依次表示交换区总量、空闲交换区大小、缓冲交换区大小。
top 命令的第2部分是进程信息区,显示了系统内各个进程的资源使用情况。
PID : 进程id
PPID: 父进程id
RUSER: Real user name
UID: 进程所有者的用户id
USER: 进程所有者的用户名
GROUP: 进程所有者的组名
TTY: 启动进程的终端名。 不是从终端启动的进程则显示为 ?
PR: 优先级
NI: nice值,负值表示高优先级,正值表示低优先级
P: 最后使用的CPU, 仅在多CPU环境下有意义
%CPU: 上次更新到现在的CPU时间占有百分比
TIME: 进程使用的CPU时间总计,单位秒
TIME+: 进程使用的CPU时间总计, 单位 1/100秒
%MEM: 进程使用的物理内存百分比
VIRT: 进程使用的虚拟内存总量, 单位KB
SWAP: 进程使用的虚拟内存中被换出的大小
RES: 进程使用的、未被换出的物理内存大小
CODE: 可执行代码占用的物理内存大小
DATA: 可执行代码以外的部分占有的物理内存大小
SHR: 共享内存大小
nFLT: 页面错误次数
nDRT: 最后一次写入到现在, 被修改过的页面数
S: 进程状态。D 表示不可中断的睡眠状态; R表示运行; S表示睡眠; T表示跟踪/停止; Z表示僵尸进程
COMMAND: 命令名/命令行
WCHAN: 若该进程正在睡眠,则显示睡眠中的系统函数名。
Flags: 任务标志。
在top 命令中, 按下f键, 可以进行列的选择, 使用o 键可以更改列的显示顺序。此外。 top 命令还有一些实用的交互指令
h : 显示帮助信息
k: 终止一个进程
q: 退出程序
c: 切换显示命令名称和完整命令行
M: 根据驻留内存大小进行排序
P: 根据CPU使用百分比大小进行排序
T: 根据时间/累计时间进行排序
数值1: 显示所有CPU负载情况
2. sar 命令
sar 命令也是linux 系统中重要的性能监测工具之一, 它可以周期性地对内存和CPU使用情况进行采样
sar [options1] [<interval> [<count>]]
interval: 采样周期
count: 采样数量
-A :所有报告的总和
-u: CPU利用率
-d: 硬盘使用报告
-b: I/O 的情况
-q: 查看队列长度
-r: 内存使用统计信息
-n: 网络信息统计
-o: 采样结果输出到文件
3. vmstat
它可以统计CPU 内存使用情况、swap使用情况等信息。
和sar 类似, vmstat 也可以指定采样周期和采样次数
4. iostat 命令
提供详尽的I/O 信息。
5. pidstat 工具
一个功能强大的性能监测工具, 它也是Sysstat 的组件之一。 可以到
http://www.icewalkers.com/Linux/Software/59040/Sysstat.html
下载。 下载后安装即可。
pidstat 的强大之处在于, 它不仅可以监视进程的性能情况, 也可以监视线程的性能情况。
要监控程序的CPU使用率, 可以先使用jps 命令找到PID.然后使用pidstat命令输出程序的CPU使用情况。
pidstat 的参数-p 用于指定进程ID, -u 表示对CPU使用率的监控。
使用pidstat 可以
-- CPU 使用率监控
-- I/O 使用监控
-- 内存监控
1. 任务管理器
2. perfmon 性能监控工具
在命令行中使用 perfmon 命令。
3. Process Explorer
到
https://technet.microsoft.com/en-us/sysinternals/bb896653
下载。
Process Explorer 不仅显示了系统内所有的进程, 还进一步显示了进程 见的父子关系。
4. pslist 命令行
可以到:
https://technet.microsoft.com/en-us/sysinternals/bb896682
下载。
基本用法:
pslist [-d][-m][-x][-t][-s [n] [-r n] [name|pid]
-d 显示线程详细信息
-m 显示内存详细信息
-x: 心事进程、内存和线程信息
-t: 显示进程间父子关系
-s[n]: 进入监控模式。 n 指定程序运行时间, 使用ESC键退出。
-r n 指定监控模式下的刷新时间,单位为秒
name: 指定监控的进程名称
-e: 使用精确匹配
pid: 指定进程ID
工具在JDK安装目录的bin 目录中
这些exe 可执行文件只是 Java程序的一层包装, 真正实现是在tools.jar中
以jps 工具为例, 执行这个exe 和使用命令行
java -classpath %Java_HOME%/lib/tools.jar sun.tools.jps.Jps 命令是等价的。
1. jps 命令
类似于Linux下的ps, 但它只用于列出Java的进程。直接运行jps不加任何参数, 可以列出Java程序的进程ID以及Main函数等名称。
-q 指定jps 只输出进程ID
-m 用于输出传递给Java进程的参数
-l 用于输出主函数的完整路径
-v 可以显示传递给JVM的参数
2. jstat
可以用于观察Java应用程序运行时信息的工具。可以通过它,查看堆信息的详细情况, 基本使用语法为:
jstat -<option> [-t] [-h<lines>]<vmid>[<interval> [count]]
-class: 显示ClassLoader的相关信息
-compiler: 显示JIT编译的相关信息
-GC: 显示与GC相关的堆信息
-gccapacity: 显示各个代的容量及使用情况
-gccause: 显示垃圾收集相关信息, 同时显示最后一次或当前正在发生的垃圾收集的诱发原因
-gcnew: 显示新生代信息
-gcnewcapacity: 显示新生代大小与使用情况
-gcold: 显示老年代和永久代的信息
-gcoldcapacity: 显示永久代的大小
-gcutil: 显示垃圾收集信息
-printcompilation: 输出JIT编译的方法信息
-g 参数可以在输出信息前加上一个Timestamp列,显示程序的运行时间
-h 参数可以在周期性数据输出时,输出多少行数据后,跟着输出一个表头信息
interval 参数用于指定输出统计数据的周期,单位为毫秒
count 用于指定一共输出多少次数据
3. jinfo 命令
用来查看正在运行的Java 应用程序的扩展参数,甚至支持在运行时修改部分参数, 基本语法为:
jinfo <option><pid>
-flag<name>: 打印指定JVM的参数值
-flag [+|-]<name>: 设置指定JVM参数的布尔值
-flag <name>=<value>: 设置指定JVM参数的值
4. jmap 命令
可以生成Java应用程序的堆快照和对象的统计信息
例如
jmap -histo 2972 >c:\s.txt
5. jhat 命令
用于分析Java 应用程序的堆快照内容。
6. jstack 命令
用于导出Java应用程序的线程堆栈:
jstack [-l] <pid>
-l: 用于打印锁的附加信息
7. jstatd
在以上工具中, 一些监控工具也支持对远程计算机的监控(jps,jstat). 为了启用远程监控,则需要配合使用jstatd工具。
8. hprof 工具
hprof 不是独立的监控工具,它只是一个Java agent工具,它可以用于监控Java应用程序在运行时的CPU信息和堆信息。