如何找出系统中load高时处于运行队列的进程

系统有很高的负载但是CPU使用率却很低,或者负载很低而CPU利用率很高,这两者没有直接关系,如何用脚本统计出来处于运行队列的进程呢?

每隔1s统计一次:

#!/bin/bash
LANG=C
PATH=/sbin:/usr/sbin:/bin:/usr/bin
interval=1
length=86400
for i in $(seq 1 $(expr ${length} / ${interval}));do
date
LANG=C ps -eTo stat,pid,tid,ppid,comm  --no-header | sed -e 's/^ \*//' | perl -nE 'chomp;say if (m!^\S*[RD]+\s*!)'
date
cat /proc/loadavg
echo -e "\n"
sleep ${interval}
done

从统计出来的结果可以看到:

注:R代表运行中的队列,D是不可中断的睡眠进程

在load比较高的时候,有大量的nginx处于R或者D状态,他们才是造成load上升的元凶,和我们底层的负载确实是没有关系的。

最后也给大家share一下查CPU使用率比较高的线程小脚本:

#!/bin/bash
LANG=C
PATH=/sbin:/usr/sbin:/bin:/usr/bin
interval=1
length=86400
for i in $(seq 1 $(expr ${length} / ${interval}));do
date
LANG=C ps -eT -o%cpu,pid,tid,ppid,comm | grep -v CPU | sort -n -r | head -20
date
LANG=C cat /proc/loadavg
{ LANG=C ps -eT -o%cpu,pid,tid,ppid,comm | sed -e 's/^ *//' | tr -s ' ' | grep -v CPU | sort -n -r | cut -d ' ' -f 1 | xargs -I{} echo -n "{} + " && echo ' 0'; } | bc -l
sleep ${interval}
done
fuser -k $0

Linux load average 高的元凶相关推荐

  1. Linux Load Average高但磁盘IO和CPU占用率不高的可能原因

    vmstat 1:查看block in(bi),block out(bo),interrupt(in),context switch(cs) pidstat -w 1:查看每个进程的context s ...

  2. Linux load average负载量分析与解决思路

    一.load average top命令中load average显示的是最近1分钟.5分钟和15分钟的系统平均负载.系统平均负载表示 系统平均负载被定义为在特定时间间隔内运行队列中(在CPU上运行或 ...

  3. Linux load average详解

    转载至linux load average负载详细解释 一.load average top命令中load average显示的是最近1分钟.5分钟和15分钟的系统平均负载.系统平均负载表示 系统平均 ...

  4. linux load average,理解Linux中的Load Average

    在Linux系统中,使用下面的命令: top w uptime (以上三个命令各有区别,top是以固定间隔显示进程的资源占用排名,w显示who and what they are doing,upti ...

  5. linux load average,Linux 平均负载 Load Average 详解

    一.什么是Load Average? 系统负载(System Load)是系统CPU繁忙程度的度量,即有多少进程在等待被CPU调度(进程等待队列的长度). 平均负载(Load Average)是一段时 ...

  6. 深入理解 Linux Load Average

    一直不解,为什么io占用较高时,系统负载也会变高,偶遇此文,终解吾惑. #1 load average介绍 ##1.1 load average 指标介绍 uptime和top等命令都可以看到load ...

  7. linux 系统负载高 如何检查

    1:load Average 1.1:什么是Load?什么是Load Average? Load 就是对计算机干活多少的度量(WikiPedia:the system Load is a measur ...

  8. 解决Linux 负载过高问题过程记录

    解决问题的思路 1.top命令查看该机器的负载状况 2.cd  /proc/pid 查看对应高占用程序的位置 3.进入对应程序中查看日志,根据CPU和内存这两个因素分析 4.ps -ajxf 查看进程 ...

  9. linux 负载高 标准,linux 系统负载高 如何检查

    1:load Average 1.1:什么是Load?什么是Load Average? Load 就是对计算机干活多少的度量(WikiPedia:the system Load is a measur ...

最新文章

  1. 手摸手教你数据可视化!(附实例讲解)
  2. 查询时间范围_MySQL慢查询(中):正确处理姿势,你get到了吗?
  3. JProfiler 5.1.4的使用方法
  4. MegaSAS RAID卡 BBU Learn Cycle周期的影响
  5. 利剑无意之JAVA面试题(二)
  6. c语言程序后退_c语言中向后退一格是啥符号?
  7. 北京尚学堂|程序员的智慧
  8. 前端学习(3298):effect的练习
  9. 求一个数的阶乘值c语言代码,求10000的阶乘(c语言代码实现)
  10. BugkuCTF-MISC题telnet
  11. System.Diagnostics.Process.Star的用法
  12. leetcode刷题日记-在线选举
  13. 10月15号和16号PC端云音乐项目总结
  14. 如何转化知网CAJ格式的论文为PDF?
  15. STVD cpstm8 miss } in struct/union definition
  16. Linux服务器使用网络代理
  17. Spring Boot qq邮箱验证码注册和登录验证
  18. [Mac]制作MacOs Mojave系统盘教程 (全新安装 MacOs系统)
  19. Google Go 语言从入门到应用必备开源项目
  20. 软件测试 | 测试开发 | 3年测试经验跳槽成功拿下30W+年薪

热门文章

  1. Python查漏补缺
  2. java变量无修饰符默认类型,Java变量与修饰符
  3. 十年磨一剑? Linux QQ 终于发布了新版本!
  4. addr2line 输出为?:0可能原因
  5. 基于 Nepxion/Discovery 的灰度发布实现
  6. PHPStrom2018最新版软件汉化教程,绝对靠谱
  7. spark-submit参数说明
  8. 汇集全球21位医生的经验和智慧,总结出最实用的专业建议,这些都是最值得你牢记的健康秘密~
  9. 【昇腾AI系列】 在200DK上安装MindX SDK
  10. ROS使用usb_cam驱动摄像头出现select timeout然后process has died问题