1.load
load为特定时间间隔内运行队列中平均线程数。load average后面三个值代表1、5、15分钟系统的load值,如果每个cpu的线程数大于5,表示系统负载较高,需采取措施降低负载,加快系统响应速度。
$ uptime
10:36:46 up 207 days, 17:55, 1 user, load average: 0.45, 0.75, 0.85
2.CPU利用率
CPU的时间消耗主要在如下几方面:用户进程、内核进程、中断处理、I/O等待、Nice时间、丢失时间、空闲等部分。CPU的利用率为这些时间所占总时间的百分比。通过CPU利用率,反映CPU的使用和消耗情况。
$ top | grep Cpu
%Cpu(s): 4.0 us, 0.3 sy, 0.0 ni, 95.1 id, 0.5 wa, 0.0 hi, 0.0 si, 0.1 st
%Cpu(s): 16.4 us, 1.3 sy, 0.0 ni, 80.6 id, 1.3 wa, 0.0 hi, 0.2 si, 0.2 st
%Cpu(s): 20.7 us, 1.5 sy, 0.0 ni, 75.0 id, 2.5 wa, 0.0 hi, 0.1 si, 0.2 st
%Cpu(s): 21.7 us, 2.1 sy, 0.0 ni, 75.6 id, 0.4 wa, 0.0 hi, 0.1 si, 0.2 st
%Cpu(s): 16.9 us, 1.3 sy, 0.0 ni, 80.9 id, 0.5 wa, 0.0 hi, 0.3 si, 0.2 st
us:用户时间(user time),表示cpu执行用户进程所占用的时间比,通常情况希望us的占比越高越好。
sy:系统时间(system time),表示cpu内核态所花费的时间,sy的占比较高意味着系统在某些方面设计的不合理。
ni:Nice时间(nice time),表示系统在调整系统优先级的时候所花费的时间。
id:空闲时间(idle time),表示系统处于空闲期,等待系统进程运行这个过程所占用的时间。id的占比越低越好。
wa:等待时间(waiting time),表示cpu在等待I/O操作所花费的时间。系统不应该花费大量的时间进行等待,否则可能某个地方设计不合理。
hi:硬件中断处理时间(hard irq time),表示系统处理硬件中断所占用的时间。
si:软件中断处理时间(soft irq time),表示系统处理软件中断所占用的时间。
st:丢失时间(steal time),表示被强制等待虚拟cpu的时间。如果占比较高,表示当前虚拟机与该宿主上其他虚拟机间的cpu争用较为频繁。
多个或多核cpu的服务器,查看每个cpu的使用情况,top命令后按1,可查看每个cpu利用率:
$ top
top - 11:04:17 up 207 days, 18:22, 2 users, load average: 1.75, 1.61, 1.25
Tasks: 153 total, 1 running, 152 sleeping, 0 stopped, 0 zombie
%Cpu0 : 7.1 us, 0.7 sy, 0.0 ni, 89.2 id, 2.4 wa, 0.0 hi, 0.3 si, 0.3 st
%Cpu1 : 15.2 us, 0.3 sy, 0.0 ni, 84.5 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu2 : 5.7 us, 0.3 sy, 0.0 ni, 93.9 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu3 : 3.4 us, 0.7 sy, 0.0 ni, 95.3 id, 0.3 wa, 0.0 hi, 0.3 si, 0.0 st
KiB Mem: 16006448 total, 15822004 used, 184444 free, 286124 buffers
KiB Swap: 0 total, 0 used, 0 free. 4554820 cached Mem
默认情况下top是按进程来显示cpu消耗情况,按shift+h,可以按照线程来查看cpu消耗情况,对于java应用非常有效。
-p 可以指定查看的进程:
$ top -p 21146
top - 11:10:55 up 207 days, 18:29, 2 users, load average: 2.65, 2.04, 1.57
Tasks: 1 total, 0 running, 1 sleeping, 0 stopped, 0 zombie
%Cpu(s): 38.4 us, 44.3 sy, 0.0 ni, 15.9 id, 0.4 wa, 0.1 hi, 0.4 si, 0.4 st
KiB Mem: 16006448 total, 15786216 used, 220232 free, 287160 buffers
KiB Swap: 0 total, 0 used, 0 free. 4508536 cached Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
21146 root 20 0 6774296 2.293g 9140 S 7.0 15.0 83:02.28 java
3.磁盘剩余空间
df命令查看磁盘的剩余空间:
$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/xvda1 20G 9.0G 9.6G 49% /
devtmpfs 7.8G 0 7.8G 0% /dev
tmpfs 7.7G 0 7.7G 0% /dev/shm
-h 表示按单位格式化输出。
du用来查看具体目录所占用的空间:
$ du -d 1 -h /data/
6.1G /data/riskimage
41M /data/risk-star
112M /data/source
128M /data/tmp
6.3G /data/logs
-d 表示递归深度,1表示下一级目录
-h 表示按文件大小单位格式化输出
4.网络traffic
关注网络的流量同样重要,网络流量迅速上升后可能使某些应用出现网络瓶颈,所以需要了解各个节点的阈值与水平。
$ sar -n DEV 1 1
Linux 3.10.0-123.9.3.el7.x86_64 (base01.service-inc.cn) 07/14/2016 _x86_64_ (4 CPU)
11:21:02 AM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
11:21:03 AM eth0 495.00 450.00 80.89 72.94 0.00 0.00 0.00
11:21:03 AM eth1 208.00 210.00 13.39 410.32 0.00 0.00 0.00
11:21:03 AM lo 258.00 258.00 85.41 85.41 0.00 0.00 0.00
Average: IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
Average: eth0 495.00 450.00 80.89 72.94 0.00 0.00 0.00
Average: eth1 208.00 210.00 13.39 410.32 0.00 0.00 0.00
Average: lo 258.00 258.00 85.41 85.41 0.00 0.00 0.00
-n 表示汇报网络的状况,DEV表示查看各个网卡的网络流量,第一个1表示每一秒抽样一次,第二个1表示总共取一次。
lo:表示本地回环网络
eth0、eth1:表示网卡
rxpck/s:每秒接收的数据包数量
txpck/s:每秒发出的数据包数量
rxkB/s:每秒接收到的字节数(KB)
txkB/s:每秒发送的字节数(KB)
rxcmp/s:每秒接收到的压缩包数量
txcmp/s:每秒发送的压缩包数量
rxmcst/s:每秒收到的广播包数量
Average:多次取样的平均值
5.磁盘I/O
磁盘I/O的繁忙度也是一个重要的系统指标。对于I/O密集型的应用来说,比如数据库应用和分布式文件系统等,I/O的繁忙程度也一定程度的反映了系统的负载情况,容易成为应用性能的瓶颈。
$ iostat -d -k
Linux 3.10.0-123.9.3.el7.x86_64 (base01.service.cn) 07/14/2016 _x86_64_ (4 CPU)
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
xvda 1.28 0.86 15.90 15436649 285375444
xvdb 13.08 43.97 143.90 789478293 2583453348
-d 表示查看磁盘使用情况
-k 表示以KB为单位显示
device:表示设备名称
tps:每秒处理的I/O请求数
kB_read/s:每秒从设备读取的数据量
kB_wrtn/s:每秒向设备写入的数据量
kB_read:读取的数据总量
kB_wrtn:写入的数据总量
程序运行时的数据加载、线程并发、I/O缓冲等,都依赖于内存,可用内存的大小决定了程序是否能正常运行以及运行的性能。
$ free -m
total used free shared buffers cached
Mem: 15631 12998 2632 274 290 1858
-/+ buffers/cache: 10849 4781
Swap: 0 0 0
-m 表示以MB为单位
total:内存总共大小
used:已使用内存大小
free:可使用内存大小
shared:多个进程共享的内存大小
buffers:缓冲区的大小
cached:缓存的大小
swap:虚拟内存的消耗,total为0代表无虚拟内存。有的话,需要注意虚拟内存的使用,使用过多代表物理内存已经不够。