centos7性能排查

top指令

用top指令可以查看占用资源异常的进程

第一行:任务队列信息

  • 系统时间:16:28:19

  • 已运行时间:up 57 days, 1:20

  • 当前登录用户:3users

  • 系统平均负载:load average :0.39, 0.40, 0.35

     备注:这几个数字超出核心线程数,代表负载已经超负载了。load average负载分别是`1分钟、5分钟、15分钟`的负载情况
     有一个参考值:负载值 <= cpu逻辑核心数 * 0.7,在这个范围内,负载是正常的;负载值 = cpu逻辑数 * 1,表示满负载运行;负载值 > cpu逻辑数 * 1,表示超负载运行
     例如一台16核32线程的,逻辑核心数是32个(输入top指令,按键“1”显示输出逻辑核心,如上图所示4逻辑核)
     查看cpu逻辑核心数: `grep 'model name' /proc/cpuinfo | wc -l`
     
     通常我们先看15分钟load,如果load很高,再看1分钟和5分钟负载,查看是否有下降趋势。
     `1分钟负载值 > 逻辑核心数 * 1`,那么我们不用担心,但是如果15分钟负载都超过`逻辑核心数 * 1`,我们要赶紧看看发生了什么事情。所以我们要根据实际情况查看这三个值。
    

第二行:任务进程信息

  • 总进程:Tasks:193 total

  • 运行进程:2 running

  • 睡眠进程: 191 sleeping

  • 停止进程: 0 stopped

  • 僵尸进程: 0 zombie

     备注:系统平均负载高的时候,看看有没有僵尸进程,如果有大量僵尸进程,CPU有可能会爆满。(上图没有僵尸进程)
     使用命令 ` ps -A -ostat,ppid,pid,cmd | grep -e '^[Zz]' `查看僵尸父进程和子进程,杀死僵尸父进程才能真正杀死进程
     使用命令 ` kill -HUD 僵尸父进程 ` 或者 ` kill -9 僵尸父进程 `
     
     ` ps -A -ostat,ppid,pid,cmd | grep -e '^[Zz]' `参数备注:
     -A:参数列出所有进程
     -o:自定义输出字段stat,ppid,pid,cmd
     因为状态为z或者Z的进程为僵尸进程,所有用grep抓取stat为Zz的进程
    

第三行:CPU状态信息

  • 5.8 us:用户空间占用CPU百分比

  • 1.3 sy:内核空间占用CPU百分比

  • 0.0 ni:改变过优先级的进程占用CPU百分比

  • 89.1 id:CPU空闲时间百分比

  • 3.8 wa:(iowait) 等待 i/o完成占用CPU的百分比,只统计磁盘I/O(包含NFS类型的磁盘),不包含网络I/O;对于制定的CPU来说,iowait表示在此时间内,CPU其实是空闲的,不过CPU并不是严格意义上的空闲,毕竟它还需要等待I/O操作完成。对于产生I/O操作的请求的线程来说,它会阻塞等待I/O操作完成。

     备注:此项数值变大,需要排查代码中是否大量使用了阻塞式IO
    
  • 0.0 hi:硬中断占用CPU的百分比

  • 0.0 st:软中断占用CPU的百分比

第四行:内存状态

KiB Mem : 7955184 total, 176120 free, 4999244 used, 2779820 buff/cache(单位是K)

如果系统上`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分配器中的缓存对象
至此,作者也不太了解pagecache和slab机制,不过不影响实践,知道有这么个机制存在就行。

第五航:swap交换区信息

正常情况下used占用为0,如果在不停的变化,说明内核在不断进行内存和swap的数据交换,这时在告警真正的内存不够用了。

第七行及以下:各进程任务的状态

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

附加

多核CPU的监控在top的基本视图中,按键盘数字1,可监视每个逻辑CPU的情况;

监控内存从大到小排序,按键字母M

监控cpu百分比从大到小排序,按键字母大写P

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


cpu(s)状态wa过高,简单排查过程

开始 —> 通过iostat -x 1 10命令查看相关磁盘使用信息 —> 通过iotop命令查看比较详细的信息 —> 通过pidstat -d 1展示I/O统计,每秒更新一次

  1. iostat -x 1 10 (需要安装,命令yum -y install sysstat)

  2. iotop(需要安装,命令yum -y install iotop)

  3. pidstat -d 1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

雨路行人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值