Linux性能优化实战 07-08:ps命令查看进程状态,以及僵尸进程

一、进程的状态

1. 查看进程状态: ps 命令的STAT字段, top命令的S字段

2. 进程状态说明:

    R:正在运行或等待运行

    D:正在跟硬件交互,不允许被其他进程或中断打断

    Z:僵尸进程,自身已结束但父进程没有回收资源

    S:可中断睡眠状态,等待被唤醒

     I:内核线程的空闲状态,不可中断

二、判断僵尸进程是否对系统造成了影响

    执行top命令

(1) 第一行的平均负载(Load Average),分别是过去的1,、5、15分数的复杂,表明复杂正在增加,并且以到达CPU数(2)。

(2) 第二行的tasks,已经确认有115 zombie

(3) 用户CPU(us)和系统CPU(sy)都不高,但iowait(wa)很高,说明有问题。

(4) 有两个进程处于D状态,所以确认有僵尸进程已经对系统造成影响。

三、找出僵尸进程影响性能的具体代码 

(不是所有僵尸进程都必然影响性能,要证明)

1.  使用dstat 命令,观察 CPU 和 I/O 的使用情况

    

    每当 iowait 升高(wai)时,磁盘的读请求(read)都会很大。这说明 iowait 的升高很可能就是磁盘读导致。

2. 使用 pidstat 命令,查看进程读写数据量 (查看所有: pidstat -d 1 20, 查看具体某个进程:pidstat -d -p 4344 1 3)

    

    确认就是读数据的问题。

3. 使用 strace 查看系统调用堆栈

   

    因为僵尸进程无法查看系统调用,所以这个方法不行,要换一个办法。

4.  使用 perf 查看系统调用

    先 perf record -g 执行15秒,然后ctrl + c,再执行 perf report

         

    得到具体的函数,然后去程序处修改就行了

四、小结

1. top 确定是否有僵尸进程, iowait(wa) 数值是不是过高

2. dstat 查看 read write是不是很大

3. pidstat 查看是哪个进程读写很大

4. strace 查看非僵尸进程的调用堆栈

5. perf 查看僵尸进程的系统调用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值