Java性能调优工具(Linux)

为了能准确获得程序的性能信息,需要使用各种辅助工具。以下主要介绍了Linux上关于Java的系统性能分析工具,掌握这些工具,对于性能瓶颈定位、系统故障排查都有帮助。

1、top命令

 1 [root@localhost ~]# top
 2 top - 10:00:05 up 4 days, 22:16,  1 user,  load average: 0.00, 0.01, 0.05
 3 Tasks: 211 total,   1 running, 210 sleeping,   0 stopped,   0 zombie
 4 Cpu(s):  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
 5 Mem:   8064684k total,  3277888k used,  4786796k free,   202912k buffers
 6 Swap:  8142844k total,        0k used,  8142844k free,  2503844k cached
 7 
 8   PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                                                          
 9 18730 root      20   0 15196 1220  840 R  0.3  0.0   0:00.06 top                                                                                                                               
10     1 root      20   0 19408 1576 1252 S  0.0  0.0   0:00.87 init                                                                                                                              
11     2 root      20   0     0    0    0 S  0.0  0.0   0:00.08 kthreadd                                                                                                                          
12     3 root      20   0     0    0    0 S  0.0  0.0   0:00.31 ksoftirqd/0                                                                                                                       
13     5 root       0 -20     0    0    0 S  0.0  0.0   0:00.00 kworker/0:0H                                                                                                                      
14     7 root      RT   0     0    0    0 S  0.0  0.0   0:00.03 migration/

【释义】

第一行:top - 10:00:05 up 4 days, 22:16, 1 user, load average: 0.00, 0.01, 0.05

任务队列信息:与uptime命令执行结果一样。

10:00:05 up 4 days, 22:16 1 user load average: 0.00, 0.01, 0.05
当前系统时间 系统运行时间,格式为时:分 当前登录用户数

系统负载,即任务队列的平均长度。 三个数值分别为  1分钟、5分钟、15分钟前到现在的平均值。

第二行:Tasks: 211 total, 1 running, 210 sleeping, 0 stopped, 0 zombie

进程统计信息:

211 total 1 running 210 sleeping 0 stopped 0 zombie
进程总数 正在运行的进程数 睡眠的进程数 停止的进程数

僵尸进程数

第三行:Cpu(s): 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st

CPU统计信息:

0.0%us 0.0%sy 0.0%ni 100.0%id 0.0%wa 0.0%hi 0.0%si 0.0%st
用户空间CPU占用率 内核空间CPU占用率 用户进程空间内改变过优先级的进程CPU占用率 空闲CPU占用率 等待输入输出的CPU时间百分比 硬件中断请求 软件中断请求 Steal Time

第四、五行:Mem: 8064684k total, 3277888k used, 4786796k free, 202912k buffers

                Swap: 8142844k total, 0k used, 8142844k free, 2503844k cached

内存信息:

Mem 8064684k total 3277888k used 4786796k free 202912k buffers
物理内存总量 已使用的物理内存 空闲物理内存 内核缓存使用量
Swap 8142844k total 0k used 8142844k free 2503844k cached
交换区总量 使用的交换区总量 空闲交换区大小 缓存交换区大小

第六行:PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND

进程信息:

PID USER PR NI VIRT RES

进程id

进程所有者的用户id 优先级 nice值。负值表示高优先级,正值表示低优先级 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA

SHR

S %CPU %MEM TIME+ COMMAND
共享内存大小,单位kb 进程状态。
 D=不可中断的睡眠状态
 R=运行
 S=睡眠
 T=跟踪/停止
 Z=僵尸进程
上次更新到现在的CPU时间占用百分比 进程使用的物理内存百分比 进程使用的CPU时间总计,单位1/100秒 命令名/命令行

还有其他的一些参数,这里没有列出,了解请查看《Java程序性能优化-让你的Java程序更快、更稳定》这本书的第300页。

另外,top命令还有一些比较使用的交互命令:

f o h k q c M P T 数字1
可以进行列的选择 可以更改列的显示顺序 显示帮组信息 终止一个进程 退出程序 切换显示命令名称和完整命令行 根据驻留内存大小进行排序 根据CPU使用百分比大小进行排序 根据时间/累积时间进行排序 显示所有CPU负载情况

 

注意:使用top命令可以从宏观上观察系统各个进程对CPU的占用情况以及内存使用情况

 

2、sar命令

3、vmstat命令

4、iostat命令

5、pidstat命令

posted @ 2015-12-16 10:57  xiao_quan  阅读(2914)  评论(0编辑  收藏  举报