原理說明linux
在對服務器進行維護時,有時也遇到因爲系統 CPU(利用率)負載太高致使業務中斷的狀況。服務器上可能運行多個進程,查看單個進程的 CPU 都是正常的,可是整個系統的 CPU 負載多是異常的。經過腳本對系統 CPU 負載進行時時監控,能夠在異常時及時發送告警,便於維護人員及時處理,預防事故發生。下面的函數能夠檢測系統 CPU 使用狀況 。使用 vmstat 取 5 次系統 CPU 的 idle 值,取平均值,而後經過與 100 取差獲得當前 CPU 的實際佔用值。
vmstat(VirtualMeomoryStatistics,虛擬內存統計)是Linux中監控內存的經常使用工具,可對操做系統的虛擬內存、進程、CPU等的總體狀況進行監視。該命令能夠顯示關於系統各類資源之間相關性能的簡要信息,這裏我主要用它來看CPU的一個負載狀況。bash
[root@host ~]# cat cpuload.sh #!/bin/bash #Author: Jaking #Mail: Jaking1024@163.com #Date:2018/7/11 #Function:This script is to get the CPU load. function GetSysCPU { CpuIdle=`vmstat 1 5 |sed -n '3,$p' | awk '{x = x + $15} END {print x/5}' | awk -F. '{print $1}'` CpuNum=`echo "100-$CpuIdle" | bc` echo $CpuNum } cpu=`GetSysCPU` echo "The system CPU is $cpu" if [ $cpu -gt 80 ] then { echo "The usage of system CPU is larger than 80%" } else { echo "The usage of system CPU is normal" } fi [root@host ~]# bash cpuload.sh The system CPU is 8 The usage of system CPU is normal
從上面的輸出可見:當前 Linux 服務器系統 CPU 利用率爲 8%,是正常的,沒有超過 80% 的告警限制。服務器