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

top:top命令监控CPU利用率,进程状态和内存利用率并且可以详细列出每一个进程占用了多少CPU和多少内存。

[[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。

时间: 2024-08-30 03:12:44

Linux常用命令(6)-性能瓶颈分析(java)的相关文章

Linux常用命令(十二)日志文件分析

? ? ? ? ? ? ? ? ? ? ? ? Linux常用命令(十二)日志文件分析 日志文件是用于记录Linux系统中各种运行消息的文件,相当于Linux主机的"日记".不同的日志文件记载了不同类型的信息,如Linux内核消息.用户登录事件.程序错误等. 一.主要日志文件 ???? ? ? ? 在Linux系统中,日志数据主要包括以下三种类型. ■ 内核及系统日志: 这种日志数据由系统服务rslslog统一管理,根据其主配置文件/etc/rsyslog.conf中的设置决定将内核消

linux常用命令技巧

原文地址 这篇文章来源于Quroa的一个问答<What are some time-saving tips that every Linux user should know?>-- Linux用户有哪些应该知道的提高效率的技巧.我觉得挺好的,总结得比较好,把其转过来,并加了一些自己的理解. 首先,我想告诉大家,在Unix/Linux下,最有效率技巧的不是操作图形界面,而是命令行操作,因为命令行意味着自动化.如果你看过<你可能不知道的Shell>以及<28个Unix/Linu

(转)linux常用命令

原地址:http://www.cnblogs.com/svage/p/3700122.html 1.删除目录及子目录下的 .svn目录 find . -type d -name ".svn" | xargs rm -rf 2./tmp 目录的权限 drwxrwxrwt rwt的意思是:对目录有执行权限,但不能删除,即sticky bit rwx : 可读可写可执行 4+2+1 3.改变群组.用户.权限 chgrp   群组名   改变的目录 groupadd -g gid gname

linux常用命令整理(五):shell基础

大家好,我是会唱歌的程序猿------ 最近在学习linux,闲暇之余就把这些基本的命令进行了整理,希望大家能用的上,整理的的目的是在忘了的时候翻出来看看^?_?^,前后一共分为五个部分: linux基本命令整理(一):常用命令 地址:http://www.cnblogs.com/devinCat/p/7247824.html linux基本命令整理(二):用户.用户组.文件系统和网络 地址:http://www.cnblogs.com/devinCat/p/7247847.html linux

linux常用命令整理(四):软件包管理和shell基础

大家好,我是会唱歌的程序猿------ 最近在学习linux,闲暇之余就把这些基本的命令进行了整理,希望大家能用的上,整理的的目的是在忘了的时候翻出来看看^?_?^,前后一共分为五个部分: linux基本命令整理(一):常用命令 地址:http://www.cnblogs.com/devinCat/p/7247824.html linux基本命令整理(二):用户.用户组.文件系统和网络 地址:http://www.cnblogs.com/devinCat/p/7247847.html linux

linux常用命令-2

晚上翻翻很久之前从网上down的各种资料,有些有用.下面是不知从哪弄来的txt文档,看看觉得挺好,下面的是原文. Linux 常用命令使用方法大搜刮管理提醒: 本帖被 haowubai 执行置顶操作(2009-02-06) Linux 常用命令使用方法大搜刮 1.# 表示权限用户(如:root),$ 表示普通用户 开机提示:Login:输入用户名 password:输入口令 用户是系统注册用户成功登陆后,可以进入相应的用户环境. 退出当前shell,输入:exit 2.useradd netse

二十九、linux常用命令(一)

vim是打开vim编辑器,别的编辑器还有vi(功能没有vim 强大),nano,emacs等等,感觉还是vim最强大,其次是vi,别的就要差一些了. 我听我们老师说,用图形界面本身已经会被高手笑了,如果打开一个gpedit或者kwrite那就废了......常用的命令 ls,列出当前目录下的文件,ls -l是列出详细信息,ls -a列出隐藏文件. cd,更改目录.clear,清屏命令.reset,重置终端. startx,启动图形界面.fdisk -l,查看硬盘分区. ps aux,列出系统进程

Linux常用命令及重要的文件目录

重要的文件目录(系统分配的目录): ROOT:存放ROOT用户的相关文件 HOME :存放普通用户的相关文件(新建的用户) BIN:存放常用命令的目录   cd 切换目录  ls dir SBIN:存放要具有一定权限才可以使用的命令 MNT:默认挂载光驱和软驱的目录 ETC:存放配置相关的文件,mysql,tomcat, USR:文件默认安装的文件夹,类似XP的program files VAR:存放经常变化的数据,如网页,apache BOOT:存放引导相关的文件 Linux常用命令 进入桌面

【Linux】Linux 常用命令汇总

查看软件xxx安装内容:dpkg -L xxx 查找软件库中的软件:apt-cache search 正则表达式 查找软件库中的软件:aptitude search 软件包 查找文件属于哪个包:dpkg -S filename 查找文件属于哪个包:apt-file search filename 查询软件xxx依赖哪些包:apt-cache depends xxx 查询软件xxx被哪些包依赖:apt-cache rdepends xxx 增加一个光盘源:sudo apt-cdrom add 系统