zoukankan      html  css  js  c++  java
  • 找出系统中 load 高时处于运行队列的进程

    如何找出系统中 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 "
    "
    sleep ${interval}
    done

    在 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
  • 相关阅读:
    编程中Visual Studio常用的快捷键
    解决博易博客后台文章管理页面无法显示分页的问题
    iReaper for WP7 顺利完工
    Visual Studio中web应用程序和网站区别
    SQL批处理
    SQL安全性
    实习之路之篇
    python 日志文件
    后端调用python遥感功能的方式
    C#使用系统的“显示桌面”功能(Shell.Application)
  • 原文地址:https://www.cnblogs.com/gaoyuechen/p/13885428.html
Copyright © 2011-2022 走看看