在排查性能过程中如遇到cpu的wa高时该如何做(一)

在排查性能过程中如遇到cpu的wa高时该如何做(一)

1、引言

谈到性能基本上离不开cpu。但对于性能只处于了解压测没有真正调优过的其实也不会关注太多。所以如何做下一步,基本上知道的更少。高手就另说了,如果你已经知道排查问题,到了调优阶段,恭喜你不用看本篇了,你已经是高手了。
所以我也以我的理解与经验来进行一步步操作说明。其实也是很简单的,就是多操作实践就好了。

2、常用的命令或工具

top命令虽然网上有很多说明,但为了更好的记忆,与快速的理解下文中提到相关的操作含义,我在此重复说明一下。

top

“top - 20:02:16 up 15 days, 10:00, 3 users, load average: 0.93, 0.96, 0.98”

top 系统时间 , up 运行时间 , users当前登录用户数,load averaget 负载均衡分别是~~1分钟、5分钟、15分钟~~ 的负载情况。
load averager数据是每隔5秒检查一次活跃的进程数,然后按特定算法计算出的数据。如果这个数除以逻辑CPU个数,结果高于5的时候就表明系统在超负荷运转。

Tasks: 219 total, 1 running, 218 sleeping, 0 stopped, 0 zombie

Tasks:总进程数, running 正在运行进程数,sleeping 休眠进程数,stopped 停止进行数,zombie 僵尸进程数

%Cpu(s): 6.7 us, 6.0 sy, 0.0 ni, 87.2 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st

cpu状态:
us【user space】 用户空间占用cpu的百分比,
**sy【sysctl】**内核空间占用cpu的百分比;
**ni【】**改变过优先级的进程占用CPU的百分比
**id【idolt】**空闲CPU百分比
**wa【wait】**IO等待占用CPU的百分比
**hi【Hardware IRQ】**硬中断中用CPU的百分比
**si【Software Interrupts】**软中断占用CPU的百分比

KiB Mem : 32780104 total, 5848456 free, 13789140 used, 13142508 buff/cashe

内存状态:total总内存,free空闲内存,used已用内存,buff/cache缓存

如果系统上缓存buff/cache占用量非常大,并且有些在运行中的程序是可用可不用的,这个时候就可以使用以下命令释放缓存区,好让之后启动的程序能正常更快的运行,但如果数据是比较重要的,则必须在删除前先执行“sync;sync;sync”同步数据到硬盘上,否则数据将丢失。

echo 1 > /proc/sys/vm/drop_caches#表示清除pagecache。
echo 2 > /proc/sys/vm/drop_caches#表示清除回收slab分配器中的对象(包括目录项缓存和inode缓存)。slab分配器是内核中管理内存的一种机制,其中很多缓存数据实现都是用的pagecache。
echo 3 > /proc/sys/vm/drop_caches#表示清除pagecache和slab分配器中的缓存对象。

KiB Swap: 4063228 total, 4063228 free, 0 used. 18520728 avail Mem

Swap交换分区信息:总交换信息,空闲交换区,已用交换区,可用的交换区
正常情况下used占用为0,如果在不停的变化,说明内核在不断进行内存和swap的数据交换,这时在告警真正的内存不够用了。

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND

PID:进程ID
**USER:**进程所有者
**PR:**进程优先级
**NI:**nice值。负值表示高优先级,正值表示低优先级
**VIRT:**进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
**RES:**进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
**SHR:**共享内存大小,单位kb.
**S:**进程状态。D=不可中断的睡眠状态进程,R=运行 S=睡眠进程,T=跟踪/停止进程,Z=僵尸进程
**%CPU:**上次更新到现在的CPU时间占用百分比
**%MEM:**进程使用的物理内存百分比
**TIME+:**进程使用的CPU时间总计,单位1/100秒
**COMMAND:**进程名称(命令名/命令行)

实例:
在这里插入图片描述

如果想要获取某个进程下所有的线程,可以使用命令:

top -Hp PID

在这里插入图片描述
可以使用帮助命令“top -h”来查看其他详细信息
在这里插入图片描述

3、简单的排查过程见下图

Created with Raphaël 2.3.0 开始 通过“iostat -x 1 10”命令查看相关磁盘使用信息 通过“iotop”命令查看比较详细的信息 通过“pidstat -d 1”展示I/O统计,每秒更新一次 结束
iostat -x 1 10

在这里插入图片描述

iotop

在这里插入图片描述

pidstat -d 1

在这里插入图片描述
现在是不是知道了,是不是很简单!

4、注意事项:

4.1、如果在使用iostat时提示“-bash: iostat: command not found“

在这里插入图片描述

说明系统没有安装,在安装时使用命令”yum -y install sysstat"而不是”yum install iostat“

  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值