在排查性能过程中如遇到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“

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

  1. mysql 有等待事件,排查性能详情中活动会话正在 SYNCH 等待事件状态下等待的问题...

    为什么我的 MySQL 数据库实例在性能详情中显示大量活动会话正在 SYNCH 等待事件状态下等待? 上次更新时间:2020 年 12 月 14 日 我有 RDS MySQL.RDS MariaDB ...

  2. 测试投影仪性能的软件,4种CPU配置家用高清微型投影仪速度测试体验

    大家使用电脑和手机会感受到,运行速度对体验感和实用性影响非常大.现在的高清智能微型投影仪都带有与手机或电脑类似的CPU,可以独立上网,独立处理办公文件等,其CPU的运行速度对于微型投影仪性能的影响也是 ...

  3. Linux中JAVA服务器CPU占用过高(分析解决方法)

    当发现生产环境CPU使用非常高,并且居高不下,导致服务器报警,需要快速定位,分析是什么地方占用CPU过高,推荐步骤如下: 1. 首先服务器查看占用cpu高的进程是哪一个,查出进程号 top 2.查询该 ...

  4. KindEditor使用过程中,用JQ提交表单时,获取不到编辑器的内容

    首先要说明的是,在使用提交按钮直接提交时,编辑器的内容是可以正常获取的,而使用 jq或js ,如$("#form").submit(),提交时,则编辑器的内容是无法获取的,这里在 ...

  5. 解决 Oracle10g安装过程中无法确定主机的IP地址时产生该异常错误

    今天在虚拟机中安装Oracle遇到了小小的问题,跳出对话框"无法确定主机的IP地址时产生该异常错误",查了一下资料还是解决了,这里吧解决办法和大家分享一下! 首先我们需要知道自己的 ...

  6. 在计算机启动过程中按F8,Win8如何在启动时按F8出现修复计算机选项

    Win8在启动时按F8出现修复计算机选项的方法如下: 在Win7以及更早的Windows系统中,开机按shift+F8可以进入"高级启动选项",Windows 7在默认安装情况下& ...

  7. Linux中Python程序CPU占用高排查

    Linux中Python程序CPU占用高排查,Linux中Python程序CPU占用高排查,Linux中Python程序CPU占用高排查 kafka-python==2.0.2和 gevent 新版本 ...

  8. springboot redis 断线重连_Redis的主从复制是如何做的?复制过程中也会产生各种问题?...

    如果Redis的读写请求量很大,那么单个实例很有可能承担不了这么大的请求量,如何提高Redis的性能呢?你也许已经想到了,可以部署多个副本节点,业务采用读写分离的方式,把读请求分担到多个副本节点上,提 ...

  9. CPU突然飙高系统反应慢,是怎么导致的?有什么办法排查?

    [Java面试]场景面试题CPU突然飙高,系统反应慢怎么排查 面试过程中,场景类的问题更容易检测出一个开发人员的基本能力.这不,有一位小伙伴去阿里面试,第一面就遇到了关于"CPU 飙高系统反 ...

  10. 打开网页到我们看到页面显示的过程中发生了什么?

    1.DNS解析 2.TCP连接 3.发送HTTP Request 4.服务器处理 Request and Return Request 报文 5.浏览器解析并渲染页面 6.连接结束   1:dns(D ...

最新文章

  1. golang函数——可以为类型(包括内置数据类型)定义函数,类似类方法,同时支持多返回值...
  2. Markdown 如何实现空行、空格?
  3. php汉字转换拼音,PHP汉字转换拼音的函数代码
  4. 微信多开txt_电脑版微信怎么双开、多开
  5. c语言fopen函数读dat文件,C语言 从a.dat文件读入数据存入b.dat文件里面(以字符形式)...
  6. 【个人想法】个人关于数据库字段类型选择的想法
  7. Catalan Number(卡特兰数/卡塔兰数)
  8. 方差为什么用平方不用绝对值,为什么要对差值求平方而不是取标准偏差的绝对值?...
  9. 利用python进行假设检验
  10. springboot接口慢_Springboot tomcat 启动慢 响应时间超长 问题解决
  11. 台式计算机亮度设置,台式电脑显示器屏幕亮度怎么调节
  12. 游戏编程入门学习笔记17——网络篇——显示本机IP
  13. 声明式导航与编程式导航
  14. 苏州计算机岗前培训,我院召开2018年新职工岗前培训动员大会
  15. 前端--HTML,常用标签学习
  16. cad 打开硬件加速卡_加速,连续变向,你以为是在说体育运动吗?其实我是在说CAD技巧...
  17. 记一次Linux服务器 误删数据的恢复操作
  18. 计算机提示无法识别usb,小编教你电脑出现无法识别usb设备怎么办
  19. linux - 异常:安装包冲突 conflicts with
  20. Python实现12306自动抢票小程序

热门文章

  1. ubuntu20.04下内核源码下载分析
  2. 洛谷P2184——贪婪大陆
  3. 举个栗子~Tableau 技巧(220):使用「集」实现不同分析维度图表的数据联动
  4. uniapp应用内苹果支付怎么写?
  5. 按照姓氏笔画排序数据、按照姓氏拼音排序数据
  6. IT战略规划之流程再造
  7. 原生对象、内置对象、宿主对象的区别
  8. 如何成为一名获得 Adobe 国际认证的专业设计师?
  9. Windows 7 通用 CDC 串口驱动程序
  10. HTML怎样转换繁体字,excel怎么转繁体字 Excel里怎样繁体字转换成简体字