服务器负载过高

在Linux中,进程分为三种状态,一种是阻塞的进程blocked process(等待I/O设备的数据或者系统调),一种是可运行的进程runnable process,另外就是正在运行的进程running process。

查看磁盘负载iostat

iostat [ 选项 ] [ <时间间隔> [ <次数> ] ]
iostat -x 1 10 (间隔1s,打印10次)

avg-cpu:

%user %nice %system %iowait %steal %idle
17.60 0.00 1.75 0.85 0.00 79.79
57.96 0.00 5.81 0.17 0.00 36.06

Device

rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
1.25 21.26 73.46 1224.76 7588.57 5993.45 20.92 0.07 0.05 1.15 0.06 0.05 7.12
列名称 含义 参数
rrqm/s 每秒进行 merge 的读操作数目。即 delta(rmerge)/s 1.25
wrqm/s 每秒进行 merge 的写操作数目。即 delta(wmerge)/s 21.26
r/s 每秒完成的读 I/O 设备次数。即 delta(rio)/s 73.46
w/s 每秒完成的写 I/O 设备次数。即 delta(wio)/s 1224.76
rsec/s 每秒读扇区数。即 delta(rsect)/s
wsec/s 每秒写扇区数。即 delta(wsect)/s
rkB/s 每秒读K字节数。是 rsect/s 的一半,因为每扇区大小为512字节。(需要计算) 7588.57
wkB/s 每秒写K字节数。是 wsect/s 的一半。(需要计算) 5993.45
avgrq-sz 平均每次设备I/O操作的数据大小 (扇区)。delta(rsect+wsect)/delta(rio+wio) 20.92
avgqu-sz 平均I/O队列长度。即 delta(aveq)/s/1000 (因为aveq的单位为毫秒)。 0.07
await 平均每次设备I/O操作的等待时间 (毫秒)。即 delta(ruse+wuse)/delta(rio+wio) 0.05
r_await 1.15
w_await 0.06
svctm 平均每次设备I/O操作的服务时间 (毫秒)。即 delta(use)/delta(rio+wio) 0
%util: 一秒中有百分之多少的时间用于 I/O 操作,或者说一秒中有多少时间 I/O 队列是非空的。即 delta(use)/s/1000 (因为use的单位为毫秒) 7.12

如果 %util 接近 100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘
可能存在瓶颈。
idle小于70% IO压力就较大了,一般读取速度有较多的wait.

top

Linux系统可以通过top命令查看系统的CPU、内存、运行时间、交换分区、执行的线程等信息。通过top命令可以有效的发现系统的缺陷出在哪里。是内存不够、CPU处理能力不够、IO读写过高。
服务器负载过高_第1张图片

命令 参数 参数 参数 参数 参数 参数 参数 参数 参数 参数 参数
top 系统当前时间 系统到目前为止已运行的时间 当前登录系统的用户数量 系统负载
top 04:21:03 534 days 1 user load average:
1.23, 3.48, 3.63
Tasks 所有启动的进程数 正在运行的进程数 挂起的进程数 停止的进程数 僵尸进程数
Tasks 1 running 338 sleeping 0 stopped 0 zombie
%Cpu(s) 用户空间占用CPU百分比 内核空间占用CPU百分比 用户空间内改变过优先级的进程占用CPU百分比 空闲CPU百分比 等待输入输出CPU时间百分比 CPU服务于硬件中断所耗费的时间总额 CPU服务软中断所耗费的时间总额 Steal Time
%Cpu(s) 2.1 us 1.1 sy 0.0 ni 96.5 id 0.2 wa 0.0 hi 0.1si 0.0st
KiB Mem 物理内存总量 已使用的物理内存 空闲物理内存 内核缓存内存量
KiB Mem 65758072 total 433044 free 25205656 used 40119372 buff/cache
Swap 交换区总量 已使用交互区总量 空闲交换区总量 缓冲的交换区总量
Swap 392184k total 0k used 392184k free 259152k cached
进程ID 进程所有者 优先级 nice值,负值表示高优先级,正值表示低优先级 进程使用的虚拟内存总量 进程使用的、未被换出的物理内存大小 共享内存大小 进程状态 上次更新到现在的CPU时间占用百分比 进程使用的物理内存百分比 进程使用CPU总时间 命令名,命令行
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
24463 tomcat 20 0 14.510g 1.460g 4248 S 7.6 2.3 73569:37 java

(任务队列的平均长度)三个值分别为1分钟、5分钟、15分钟前到现在的平均值【这三个一般会小于1,如果持续高于5,请仔细查看那个程序影响系统的运行】

查看系统负载

在这里插入图片描述
观察OSS的系统负载,得出:
CPU充足,空闲。用户程序占用CPU 正常(18%),缓存使用的比较多,相应的磁盘IO操作不是很频繁。

列名称 含义 2
【procs】 时间片
r 运行和等待cpu时间片的进程数。如果长期大于1,说明cpu不足,需要增加cpu。 2
b 等待资源的进程数,比如正在等待I/O、或者内存交换等。 0
【cpu】
us 用户方式下所花费 CPU 时间的百分比。us的值比较高时,说明用户进程消耗的cpu时间多,但是如果长期大于50%,需要考虑优化用户的程序。 18
sy 内核进程所花费的cpu时间的百分比。这里us + sy的参考值为80%,如果us+sy 大于 80%说明可能存在CPU不足。 2
wa IO等待所占用的CPU时间的百分比。这里wa的参考值为30%,如果wa超过30%,说明IO等待严重,这可能是磁盘大量随机访问造成的,也可能磁盘或者磁盘访问控制器的带宽瓶颈造成的(主要是块操作)。 1
id cpu处在空闲状态的时间百分比 80
【system】
in 在某一时间间隔中观测到的每秒设备中断数。 0
cs 每秒产生的上下文切换次数,如当 cs 比磁盘 I/O 和网络信息包速率高得多,都应进行进一步调查。 0
【memory】
swpd 切换到内存交换区的内存数量(k表示)。如果swpd的值不为0,或者比较大,比如超过了100m,只要si、so的值长期为0,系统性能还是正常 295M=295484K
free 当前的空闲页面列表中内存数量(k表示) 465M=465964K
buff 作为buffer cache的内存数量,一般对块设备的读写才需要缓冲。 0
cache: 作为page cache的内存数量,一般作为文件系统的cache,如果cache较大,说明用到cache的文件较多,如果此时IO中bi比较小,说明文件系统效率比较好。 40G=40084020
【swap】
si 由内存进入内存交换区数量。 1
so 由内存交换区进入内存数量。 1
【IO】
bi 从块设备读入数据的总量(读磁盘)(每秒kb)。 638
bo 块设备写入数据的总量(写磁盘)(每秒kb) 504

这里我们设置的bi+bo参考值为1
procs—swap-- -----io---- -system-- ------cpu----------memory----------
r b || si so || bi bo || in cs || us sy id wa st||swpd free buff cache
2 0 || 1 1 || 638 504|| 0 0 ||18 2 80 1 0 || 295484 465964 0 40084020

你可能感兴趣的:(mysql)