1.什么是负载 ?
负载(load)
是
linux
机器的一个重要指标,直观了反应了机器当前的状态。如果机器负载过高,那么对机器的操作将难以进行。
Linux
的负载高,主要是由于
CPU
使用、内存使用、
IO
消耗三部分构成。任意一项使用过多,都将导致服务器负载的急剧攀升。
2.查看服务器负载
的
命令
A)
$ uptime
12:20:30 up 44 days, 21:46, 2 users, load average: 8.99, 7.55, 5.40
B)
$ w
12:22:02 up 44 days, 21:48, 2 users, load average: 3.96, 6.28, 5.16
load average
分别对应于过去
1
分钟,
5
分钟,
15
分钟的负载平均值。
w 命令还提供了当前登录用户,以及正在执行的操作等信息。
这两个命令只是单纯的反映出负载,linux
提供了更为强大,也更为实用的
top
命令来查看服务器负载。
这两个命令只是单纯的反映出负载,linux提供了更为强大,也更为实用的top命令来查看服务器负载。
C)$ top
top命令不仅可以查看当前系统的平均负载,还可以查看不同进程对于CPU、内存等资源的使用情况。
1)
Tasks
行展示了目前的进程总数及所处状态,要注意
zombie
,表示僵尸进程,不为
0
则表示有进程出现问题。
2)
Cpu(s)
行展示了当前
CPU
的状态,
us
表示用户进程占用
CPU
比例,
sy
表示内核进程占用
CPU
比例,
id
表示空闲
CPU
百分比,
如果系统缓慢而这个值很高,说明系统慢的原因不是CPU
负载高;
wa
表示
IO
等待所占用的
CPU
时间的百分比。
wa
占用超过
30%
则表示
IO
压力很大
。
hi
:
CPU
处理硬件终端所占时间的比率;
si
:
CPU
处理软件终端所占时间的比率;
st
:流逝的时间,虚拟机中的其他任务所占
CPU
时间的比率;
用户进程占比高,wa
低,说明系统缓慢的原因在于进程占用大量
CPU
,通常还会伴有教低的
id
,说明
CPU
空转时间很少;
wa
低,
id
高,可以排除
CPU
资源瓶颈的可能。
wa
高,说明
I/O
占用了大量的
CPU
时间,需要检查交换空间的使用,交换空间位于磁盘上,性能远低于内存,当内存耗尽开始使用交换空间时,将 会给性能带来严重影响,所以对于性能要求较高的服务器,一般建议关闭交换空间。另一方面,如果内存充足,但
wa
很高,说明需要检查哪个进程占用了大量的
I/O
资源。
3)
Mem
行展示了当前内存的状态,
total
是总的内存大小,
userd
是已使用的,
free
是剩余的,
buffers
是目录缓存。
4)
Swap
行同
Mem
行,
cached
表示缓存,用户已打开的文件。
如果Swap
的
used
很高,则表示系统内存不足
。
3.
在top命令下,按1,则可以展示出服务器有多少CPU,及每个CPU的使用情况
一般而言,服务器的合理负载是CPU
核数
*2
。也就是说对于
8
核的
CPU
,负载在
16
以内表明机器运行很稳定流畅。如果负载超过
16
了,就说明服务器的运行有一定的压力了。
在top
命令下,按
shift + "c"
,则将进程按照
CPU
使用率从大到小排序,按
shift+"p"
,则将进程按照内存使用率从大到小排序,很容易能够定位出哪些服务占用了较高的
CPU
和内存。
仅仅有top
命令是不够的,因为它仅能展示
CPU
和内存的使用情况,对于负载升高的另一重要原因
——IO
没有清晰明确的展示。
linux
提供了
iostat
命令,可以了解
io
的开销。
D)
iostat -x 1 10
命令
输入iostat -x 1 10
命令,表示开始监控输入输出状态,
-x
表示显示所有参数信息,
1
表示每隔
1
秒监控一次,
10
表示共监控
10
次。
其中rsec/s
表示读入,
wsec/s
表示每秒写入,这两个参数某一个特别高的时候就表示磁盘
IO
有很大压力。
D)Free -m命令 :
用来显示内存使用情况
其中的相关说明:
Mem
:表示物理内存统计
-/+ buffers/cached
:表示物理内存的缓存统计
Swap
:表示硬盘上交换分区的使用情况
total
: 表示物理内存总数。
used
: 表示总计分配给缓存(包含buffers
与
cache
)使用的数量,但其中可能部分缓存并未实际使用。
free
: 未被分配的内存。
shared
: 共享内存,一般系统不会用到
,
总是显示0
。
buffers
: 系统分配但未被使用的buffers
数量。
cached
: 系统分配但未被使用的cache
数量。
第二行:
used
: 实际使用的内存总量。
free
: 这就是系统当前实际可用内存。
-/+ buffers/cache
开头的行:(重点看这行)
free
列是指应用程序还未使用的内存数。这个数据才是我们需要关注的空闲可用内存数。
如果此行中free
列的数据太小,那么就需要优化程序或者增加物理内存了。
总结:
(
1
)
uptime
与
w
命令查看平均负载
(
2
)使用top
命令查看负载,在
top
下按
“1”
查看
CPU
核心数量,
shift+"c"
按
cpu
使用率大小排序,
shif+"p
"
按内存使用率高低排序;
(
3
)使用iostat -x
命令来监控
io
的输入输出是否过大
(
4
)使用
free -m
命令查看系统内存