java 性能分析 linux 命令_Linux常用命令(6)-性能瓶颈分析(java)

[email protected] sectionLocus]$ top

top - 10:52:24 up 99 days, 21:31,  6 users,  load average: 1.67, 2.01, 1.83

Tasks: 665 total,   2 running, 663 sleeping,   0 stopped,   0 zombie

Cpu(s):  7.3%us,  2.4%sy,  0.0%ni, 84.8%id,  4.6%wa,  0.0%hi,  1.0%si,  0.0%st

PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND

20042 map       20   0 8681m 4.8g  10m S 165.4 30.7  59:46.66 java

3023 root      20   0  150m 5464  700 R 74.2  0.0  84883:39 redis-sentinel

8066 root      20   0     0    0    0 D  2.5  0.0  11:10.48 flush-8:16

第一行:10:52:24 up 99 days, 21:31 当前系统时间;6 users :当前有6个用户登录系统;load average: 1.67, 2.01, 1.83   后面的三个数分别是1分钟、5分钟、15分钟的负载情况。

第二行:Tasks: 665   任务(进程) 总共665个,其中2个运行,663个睡眠,stoped状态的有0个,zombie状态(僵尸)的有0个

第三行:cpu状态

6.7% us 用户空间占用CPU的百分比。

0.4% sy 内核空间占用CPU的百分比。

0.0% ni 改变过优先级的进程占用CPU的百分比

92.9% id 空闲CPU百分比

0.0% wa IO等待占用CPU的百分比

0.0% hi 硬中断(Hardware IRQ)占用CPU的百分比

0.0% si 软中断(Software Interrupts)占用CPU的百分比

在top基本视图中,按键盘数字1,可监控每个逻辑CPU的状况:

top - 13:44:20 up 100 days, 23 min,  7 users,  load average: 3.32, 2.72, 2.25

Tasks: 664 total,   2 running, 662 sleeping,   0 stopped,   0 zombie

Cpu0  : 14.8%us, 38.5%sy,  0.0%ni, 21.9%id,  0.0%wa,  0.0%hi, 24.8%si,  0.0%st

Cpu1  :  1.0%us, 40.8%sy,  0.0%ni,  0.3%id, 57.8%wa,  0.0%hi,  0.0%si,  0.0%st

Cpu2  :  1.3%us,  4.0%sy,  0.0%ni, 94.7%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st

Cpu3  :  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st

Cpu4  :  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st

Cpu5  :  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st

Cpu6  :  0.3%us,  0.0%sy,  0.0%ni, 99.7%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st

Cpu7  :  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st

Cpu8  :  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st

Cpu9  :  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st

Cpu10 :  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st

Cpu11 :  0.0%us,  5.3%sy,  0.0%ni, 94.7%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st

Cpu12 :  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st

Cpu13 :  0.0%us,  5.6%sy,  0.0%ni, 93.0%id,  1.3%wa,  0.0%hi,  0.0%si,  0.0%st

Cpu14 :  0.7%us,  0.3%sy,  0.0%ni, 99.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st

Cpu15 :  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st

Cpu16 :  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st

Cpu17 :  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st

Cpu18 :  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st

Cpu19 :  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st

Cpu20 :  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st

Cpu21 :  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st

Cpu22 :  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st

Cpu23 :  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st

Mem:  16280412k total, 16117744k used,   162668k free,   324536k buffers

Swap: 32767992k total, 11516272k used, 21251720k free, 13336076k cached

[[email protected] sectionLocus]$ 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  1 12131504 163788 275616 8459504    0    0    29    23    0    0   8   2  90  0  0

r表示运行队列的大小,

b表示由于IO等待而block的线程数量,

in表示中断的数量,

cs表示上下文切换的数量,

us表示用户CPU时间,

sys表示系统CPU时间,

wa表示由于IO等待而是CPU处于idle状态的时间,

id表示CPU处于idle状态的总时间。

dstat可以给出每一个设备产生的中断数:

1.对于每一个CPU来说运行队列不要超过3,例如,如果是双核CPU就不要超过6;

2.如果CPU在满负荷运行,应该符合下列分布,

a) User Time:65%~70%

b) System Time:30%~35%

c) Idle:0%~5%

mapstat:默认情况下,只会输出全部平均值

[[email protected] sectionLocus]$ mpstat

Linux 2.6.32-431.1.2.0.1.el6.x86_64 (ctb-test)  09/16/2014      _x86_64_        (24 CPU)

10:53:53 AM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle

10:53:53 AM  all    7.87    0.00    1.33    0.20    0.00    0.64    0.00    0.00   89.95

mpstat -P ALL

查看每一个CPU的情况

[[email protected] sectionLocus]$ mpstat -P ALL

Linux 2.6.32-431.1.2.0.1.el6.x86_64 (ctb-test)  09/16/2014      _x86_64_        (24 CPU)

10:53:26 AM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle

10:53:26 AM  all    7.87    0.00    1.33    0.20    0.00    0.64    0.00    0.00   89.95

10:53:26 AM    0   16.66    0.00   31.15    0.96    0.06   17.06    0.00    0.00   34.11

10:53:26 AM    1    8.80    0.00    0.46    2.30    0.00    0.01    0.00    0.00   88.42

10:53:26 AM    2    7.59    0.00    0.30    0.13    0.00    0.00    0.00    0.00   91.98

10:53:26 AM    3    7.92    0.00    0.10    0.05    0.00    0.00    0.00    0.00   91.94

10:53:26 AM    4    7.29    0.00    0.25    0.08    0.00    0.00    0.00    0.00   92.38

10:53:26 AM    5    7.48    0.00    0.09    0.03    0.00    0.00    0.00    0.00   92.40

10:53:26 AM    6    7.00    0.00    0.12    0.05    0.00    0.00    0.00    0.00   92.83

10:53:26 AM    7    7.30    0.00    0.07    0.03    0.00    0.00    0.00    0.00   92.60

10:53:26 AM    8    6.82    0.00    0.09    0.04    0.00    0.00    0.00    0.00   93.05

10:53:26 AM    9    7.19    0.00    0.07    0.02    0.00    0.00    0.00    0.00   92.72

10:53:26 AM   10    6.68    0.00    0.09    0.04    0.00    0.00    0.00    0.00   93.19

10:53:26 AM   11    7.08    0.00    0.06    0.02    0.00    0.00    0.00    0.00   92.83

10:53:26 AM   12    7.09    0.00    1.20    0.67    0.00    0.00    0.00    0.00   91.03

10:53:26 AM   13    8.16    0.00    0.13    0.25    0.00    0.00    0.00    0.00   91.46

10:53:26 AM   14    7.78    0.00    0.10    0.06    0.00    0.00    0.00    0.00   92.06

10:53:26 AM   15    7.60    0.00    0.13    0.03    0.00    0.00    0.00    0.00   92.24

10:53:26 AM   16    7.56    0.00    0.09    0.04    0.00    0.00    0.00    0.00   92.31

10:53:26 AM   17    7.79    0.00    0.05    0.02    0.00    0.00    0.00    0.00   92.14

10:53:26 AM   18    7.56    0.00    0.06    0.03    0.00    0.00    0.00    0.00   92.35

10:53:26 AM   19    7.80    0.00    0.05    0.01    0.00    0.00    0.00    0.00   92.14

10:53:26 AM   20    7.50    0.00    0.05    0.03    0.00    0.00    0.00    0.00   92.41

10:53:26 AM   21    7.81    0.00    0.05    0.01    0.00    0.00    0.00    0.00   92.13

10:53:26 AM   22    7.50    0.00    0.05    0.02    0.00    0.00    0.00    0.00   92.42

10:53:26 AM   23    7.80    0.00    0.05    0.01    0.00    0.00    0.00    0.00   92.13

通过使用ps命令,可以很清楚的看出到底是哪一条进程在吃CPU

[[email protected] sectionLocus]$ ps -eo pcpu,pid,user,args | sort -k 1 -r | head -16

%CPU   PID USER     COMMAND

6.2 17319 map      sshd: [email protected]

59.0  3023 root     ./src/redis-sentinel *:26379

1.6 17320 map      /usr/libexec/openssh/sftp-server

内存

free  -b,k,m,g

[[email protected] section]$ free

total       used       free     shared    buffers     cached

Mem:      16280412   16114224     166188          0     305212    8181816

-/+ buffers/cache:    7627196    8653216

Swap:     32767992   12064588   20703404

total:物理内存的总大小

used:已经使用的物理内存大小

free:空闲的物理内存大小

shared:多个进程共享的内存大小

buffers/cached:磁盘缓存的大小

第二行Mem:代表物理内存使用情况

第三行(-/+ buffers/cached):代表磁盘缓存使用状态

第四行:Swap表示交换空间内存使用状态

free命令输出的内存状态,可以通过两个角度来查看:一个是从内核的角度来看,一个是从应用层的角度来看的。

IO 监控

top 的%wa指CPU等待磁盘写入完成的时间。莫非是磁盘忙,怎样证明是磁盘在忙?

df -h  查看硬盘的分区信息

[[email protected] sectionLocus]$ df -h

Filesystem                    Size  Used Avail Use% Mounted on

/dev/mapper/VolGroup-Lv_root  244G  164G   68G  71% /

tmpfs                         7.8G     0  7.8G   0% /dev/shm

/dev/sda1                     485M   54M  406M  12% /boot

/dev/sdb1                     1.8T  1.1T  687G  61% /map

[[email protected] sectionLocus]$ iostat -d -k -t 2

Linux 2.6.32-431.1.2.0.1.el6.x86_64 (ctb-test)  09/16/2014      _x86_64_        (24 CPU)

09/16/2014 11:35:05 AM

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn

sdb              26.34       679.38       486.98 5865509664 4204394924

sda               8.41        12.06        51.23  104118766  442327556

dm-0             11.68         6.29        45.14   54302885  389705884

dm-1              2.97         5.77         6.09   49812588   52621612

tps:该设备每秒的传输次数(Indicate the number of transfers per second that were issued to the device.)。"一次传输"意思是"一次I/O请求"。多个逻辑请求可能会被合并为"一次I/O请求"。"一次传输"请求的大小是未知的。

kB_read/s:每秒从设备(drive expressed)读取的数据量;

kB_wrtn/s:每秒向设备(drive expressed)写入的数据量;

kB_read:读取的总数据量;

kB_wrtn:写入的总数量数据量;这些单位都为Kilobytes。

原文:http://blog.csdn.net/cdl2008sky/article/details/41519491

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值