centos中如何找出系统中 load 高时处于运行队列的进程
生活随笔
收集整理的這篇文章主要介紹了
centos中如何找出系统中 load 高时处于运行队列的进程
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
如何用腳本統計出來處于運行隊列的進程呢?
#1.查看進程的狀態
如何把這個腳本在centos創建并運行呢?
vi cpustatus.sh然后把腳本內容復制上去,每隔 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最后,設置文件作為可執行程序。
chmod +x cpustatus.sh以后只要通過./cpustatus.sh就可以執行該腳本了。執行后,如果想退出,可以通過Ctrl+z命令就可以進行退出了。
從統計出來的結果可以看到: 在 load 比較高的時候,有大量的 nginx 處于 R 或者 D 狀態,他們才是造成 load 上升的元兇,和我們底層的負載確實是沒有關系的。#2.CPU 使用率比較高的線程
同上,創建一個cpu.sh腳本,然后通過下面這段腳本
#!/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 微信掃一掃:關注我個人訂閱號“猿小飛”,更多精彩文章在這里及時發布:?
總結
以上是生活随笔為你收集整理的centos中如何找出系统中 load 高时处于运行队列的进程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux下如何查看高CPU占用率线程
- 下一篇: java监听窗口饮品,Java 完成部分