性能评估的要点
- CPU
主要工具:vmstat
- 内存
主要工具:free
- 磁盘I/O
主要工具:iostat、sar
- 网络I/O
主要工具:ifstat
- 系统整体性能
主要工具:top
CPU 评估
vmstat 命令结果分析:
- procs
r
运行和等待CPU时间片的进程数,。
b
等待资源的进程数。
- swap
si
每秒从磁盘读入虚拟内存的大小。
so
每秒虚拟内存写入磁盘的大小。
- cpu
us
用户进程CPU使用率。
sy
系统CPU使用率。
id
空闲CPU使用率。
id + us + sy = 100
。
经验:
-
procs:r
如果长期大于CPU的个数,说明CPU遇到瓶颈。 -
procs:b
值越高,系统压力越大。 -
swap:si
如果这个值大于0,表示物理内存不够用或者内存泄露了。 -
cpu:us
值越高,说明用户进程消耗CPU时间越多,如果长期大于50%,需要考虑优化程序。 -
cpu:sy
如果太高,表示系统调用时间长,例如是IO操作频繁。 -
如果
us + sy
大于80%,说明可能存在CPU不足。
内存评估
free 命令重点指标:free
(应用程序可用内存数量)。
经验:
- “free/total > 70%” 内存充足。
- “free/total < 20%” 内存不足。
- “20% < free/total < 70%” 内存基本够用。
磁盘I/O评估
iostat 命令结果分析:
rkB/s
每秒读取数据量kBwkB/s
每秒写入数据量kBsvctm
I/O请求的平均服务时间,单位毫秒await
I/O请求的平均等待时间,单位毫秒,值越小,性能越好util
1秒中有百分几的时间用于I/O操作。接近100%时,表示磁盘带宽跑满。
经验:
rkB/s
和wkB/s
的值如果长期较高,说明持续有大量数据读写,需要警惕。svctm
和await
值相近时,说明几乎没有I/O等待,磁盘性能好。如果await
远高于svctm
,说明I/O队列等待太长,需要优化程序或更换磁盘。
网络I/O评估
ifstat 命令结果分析:
RX Pkts/Rate
数据包接收流量RX Errs/Drop
丢包TX Pkts/Rate
数据包发送流量RX Data/Rate
数据接收流量TX Data/Rate
数据发送流量
系统整体性能评估
top 命令重要指标:load average
,表示任务队列的平均长度(1分钟、5分钟、15分钟前到现在平均值)。
经验:
这3个值的大小一般不能大于系统CPU的核数,如果长期大于CPU的核数,说明CPU很繁忙,负载很高。
例如图中有2个CPU,那么健康值为:load average < 2
。