1、服务器硬指标
CPU、内存、磁盘、网络、进程......
熟悉如何查看这些指标,会对你排查线上问题很有帮助。
2、CPU--/proc/cpuinfo
指标:load(负载)
解释一下,load在CPU中可以理解为CPU可以并行处理的任务数,那么就是“CPU个数 * 核数”,如果CPU Load = CPU个数 * 核数 那么就是说CPU正好满负载,再多一点,可能就要出问题了,有任务不能被及时分配处理器,那么保证性能的话,最好是小于CPU个数 * 核数 *0.7。
load average: 0.09, 0.05, 0.01分别是1分钟、5分钟、15分钟的平均Load。
指标:r/b(进程状态)
r,run queue,可运行队列的线程数,这些线程都是可运行状态,只不过CPU暂时不可用,即为在运行队列中等待的进程数 ;
b,被blocked的进程数,正在等待IO请求;
查看指令/工具:
- w [ -h ] [ -u ] [ -w ] [ -l | -s ] [ User ](打印当前系统活动摘要)
- uptime(查询linux系统负载)
- ps(进程查看命令)
- top(实时显示系统中各个进程的资源占用状况)
- vmstat
week@week
:
~$ vmstat
procs -- -- -- -- -- -memory -- -- -- -- -- -- -swap -- -- -- -io -- -- -system -- -- --cpu -- --
r b swpd free buff cache si so bi bo in cs us sy id wa
2 0 40 204176 268968 5203360 0 0 10 24 35 34 4 17 79 0
procs -- -- -- -- -- -memory -- -- -- -- -- -- -swap -- -- -- -io -- -- -system -- -- --cpu -- --
r b swpd free buff cache si so bi bo in cs us sy id wa
2 0 40 204176 268968 5203360 0 0 10 24 35 34 4 17 79 0
- mpstat [1|2|3|...](数字代表多少秒读取一次CPU状态)
week@week
:
~$ mpstat
2
Linux 3. 2. 0 - 40 -generic (week) 06 / 16 / 2013 _x86_64_ ( 4 CPU)
04 : 17 :00 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle
04 : 17 : 02 PM all 5. 28 0.00 3. 90 0.00 0.00 0.00 0.00 0.00 90. 82
04 : 17 : 04 PM all 1. 62 0.00 2. 12 0. 12 0.00 0.00 0.00 0.00 96. 13
04 : 17 : 06 PM all 1. 26 0.00 2. 01 0.00 0.00 0.00 0.00 0.00 96. 73
Linux 3. 2. 0 - 40 -generic (week) 06 / 16 / 2013 _x86_64_ ( 4 CPU)
04 : 17 :00 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle
04 : 17 : 02 PM all 5. 28 0.00 3. 90 0.00 0.00 0.00 0.00 0.00 90. 82
04 : 17 : 04 PM all 1. 62 0.00 2. 12 0. 12 0.00 0.00 0.00 0.00 96. 13
04 : 17 : 06 PM all 1. 26 0.00 2. 01 0.00 0.00 0.00 0.00 0.00 96. 73
3、Memory--/proc/meminfo
指标:Total/Used/Free/Buffered/Cached
total:表示物理内存总量。
used:表示总计分配给缓存(包含buffers 与cache )使用的数量,但其中可能部分缓存并未实际使用。
free:未被分配的内存。
shared:共享内存,一般系统不会用到。
buffers:系统分配但未被使用的buffers 数量。
cached:系统分配但未被使用的cache 数量。
buffers是指用来给块设备做的缓冲大小,他只记录文件系统的metadata以及 tracking in-flight pages.cached是用来给文件做缓冲。那就是说:buffers是用来存储,目录里面有什么内容,权限等等。
而cached直接用来记忆我们打开的文件
查看指令/工具:
- top
- ps
- /proc/meminfo
- free [-bkmotV][-s <间隔秒数>]
参 数:
-b 以Byte为单位显示内存使用情况。
-k 以KB为单位显示内存使用情况。
-m 以MB为单位显示内存使用情况。
-o 不显示缓冲区调节列。
-s<间隔秒数> 持续观察内存使用状况。
-t 显示内存总和列。
-V 显示版本信息。
week@week
:
~$ free
total used free shared buffers cached
Mem : 8132300 7878284 254016 0 252808 3990924
- / + buffers /cache : 3634552 4497748
Swap : 8341500 40 8341460
total used free shared buffers cached
Mem : 8132300 7878284 254016 0 252808 3990924
- / + buffers /cache : 3634552 4497748
Swap : 8341500 40 8341460
4、I/O
指标:%iowait,b,w/r,tps
%iowait:每一个IO请求的处理的平均时间(单位是毫秒),这里可以理解为IO的响应时间,一般地系统IO响应时间应该低于5ms,如果大于10ms就比较大了。
kB_read/s:每秒读K字节数
kB_wrtn/s
:每秒写K字节数
r/s: 每秒完成的读 I/O 设备次数。即 delta(rio)/s
w/s: 每秒完成的写 I/O 设备次数。即 delta(wio)/s
rsec/s: 每秒读扇区数。即 delta(rsect)/s
wsec/s: 每秒写扇区数。即 delta(wsect)/s
tps:该设备每秒的传输次数
,“一次传输”意思是“一次I/O请求”。多个逻辑请求可能会被合并为“一次I/O请求”。
查看指令/工具:
- top
- mpstat
- iostat
[ -c | -d ] [ -k | -m ] [ -t ] [ -V ] [ -x ] [ device [ ... ] | ALL ] [ -p [ device | ALL ] ][ interval [ count] ]
常见用法iostat -d -k 1 10 #查看TPS和吞吐量信息iostat -d -x -k 1 10 #查看设备使用率(%util)、响应时间(await)iostat -c 1 10 #查看cpu状态
week@week
:
~$ iostat
Linux 3. 2. 0 - 40 -generic (week) 06 / 16 / 2013 _x86_64_ ( 4 CPU)
avg -cpu : %user %nice %system %iowait %steal %idle
3. 98 0. 01 15. 76 0. 04 0.00 80. 22
Device : tps kB_read /s kB_wrtn /s kB_read kB_wrtn
sda 4. 09 39. 63 87. 51 3782219 8352308
sdb 0.00 0. 02 0.00 1673 0
Linux 3. 2. 0 - 40 -generic (week) 06 / 16 / 2013 _x86_64_ ( 4 CPU)
avg -cpu : %user %nice %system %iowait %steal %idle
3. 98 0. 01 15. 76 0. 04 0.00 80. 22
Device : tps kB_read /s kB_wrtn /s kB_read kB_wrtn
sda 4. 09 39. 63 87. 51 3782219 8352308
sdb 0.00 0. 02 0.00 1673 0
df/du
df命令用于检查磁盘空间使用情况
df -k 以千字节KB 为单位显示各分区的信息
df -a 显示所有分区包括大小为0 的分区
df -T 显示分区类型EXT2 或EXT3 等
du命令参数用于查看文件或文件夹的大小
du -b /home 以字节为单位显示/home 文件夹下各个子文件夹的大小
du -h ./ 以mb为单位显示当前 文件夹下各个子文件夹的大小
du -ks /home 以千字节KB 为单位显示/home 文件夹的总大小