命令輸出的內容表示在過去的1、5、15分鐘內運行隊列中的平均進程數量。
通常情況下,這些值會根據系統的CPU個數有一些區別,對于單核CPU來說,如果負載值達到了1,表明系統負載已經達到了100%,不過對于雙核系統來說,1只表示系統負載值只達到50%左右。
以此類推,在多處理器系統中,負載均值是基于內核的數量決定的。以 100% 負載計算,1.00 表示單個處理器,而 2.00 則說明有兩個雙處理器,那么 4.00 就說明主機具有四個處理器。
根據系統負載值自動重啟Web服務
下面的腳本,以裝有Apache服務器的VPS為例,定時判斷系統負載值,當達到5時,認為系統已經超負荷運轉,這時,腳本會自動重啟Apache服務,釋放系統資源,以達到讓VPS服務器平穩運行的目的。
*注:腳本來自網絡,非原創,出處不明,本人做了少許改動。
#!/bin/sh #usage: */2 * * * * root /root/checkload.sh >>/root/checkload.log TOP_SYS_LOAD_NUM=5 SYS_LOAD_NUM=`uptime awk '{print $(NF-2)}' sed 's/,//'` echo $(date +"%y-%m-%d") `uptime` if [ `echo "$TOP_SYS_LOAD_NUM < $SYS_LOAD_NUM" bc` -eq 1 ] then echo "AutoStart:" $(date +"%y-%m-%d %H:%M:%S") "pkill httpd" `ps -ef grephttpd wc -l` pkill httpd sleep 10 for i in 1 2 3 do if [ `pgrep httpd wc -l` -le 0 ] then service httpd start sleep 15 echo "AutoStart:" $(date +"%y-%m-%d %H:%M:%S") "start httpd" `ps -ef grephttpd wc -l` fi done else if [ `pgrep httpd wc -l` -le 0 ] then service httpd start sleep 15 echo "AutoStart:" $(date +"%y-%m-%d %H:%M:%S") "start httpd" `ps -ef grephttpd wc -l` fi fi |
腳本中TOP_SYS_LOAD_NUM表示最大允許的系統平均負載值,當超過這一值的時候,腳本就開始重啟apache服務。腳本的使用也挺簡便,直接到/etc/cron.d/ 建立一個定時執行文件,填入如下內容即可:
*/2 * * * * root /root/checkload.sh >>/root/checkload.log |
這里*/2,表示每兩分鐘執行一次指定的腳本,并將執行結果輸出到/root/checkload.log文件中。
你也可以根據自己的需要,來修改執行頻率。
小結
此腳本已經部署到我的VPS上一段時間,從使用的情況來看,效果還比較不錯。
新聞熱點
疑難解答
圖片精選