手机看片精品高清国产日韩,色先锋资源综合网,国产哺乳奶水91在线播放,乱伦小说亚洲色图欧洲电影

shell腳本檢測監控mysql的CPU占用率

2016-06-15 08:04:17 3852

網站訪問量大的時候mysql的壓力就比較大,當mysql的CPU利用率超過300%的時候就不能提供服務了,近乎卡死狀態,這時候最好的方法 就是重啟mysql服務。由于這種事具有不可預見性,我們不知道什么時候mysql的占用率達到300%,還是寫個程序定期判斷比較靠譜。

        學了shell編程,寫了下面的腳本:

#!/bin/bash
cpu=`ps aux | grep 'mysqld$' | cut -d " " -f6 | cut -d. -f1`
if [ $cpu -gt 300 ]
then
    service mysql restart && date >> /tmp/mysql.log
fi

 

       稍微解釋一下。首先執行"ps aux"命令獲取所有系統進程的狀態信息,包括CPU,內存等,如下圖:

然后通過管道將信息傳送給grep,$就是正則表達式結尾的意思,從所有的進程中找到以“mysqld”結尾的進程,其實就是mysql啦,這里返回的是mysql進程的信息,一行,如下圖:

      接下來的一個cut是截斷字符串,我們要統計的是CPU的占用率,當然要截取mysql的CPU數值,cut命令默認是用tab分割的,但是ps aux顯示的字符串中的空白是空格而不是tab,我們就要用空格來分割,有的字符串之間是多個空格,這里的 -f8 參數就是截取第8個字符串(有的系統可能是第6個),這個字符串就是mysql的CPU占用率啦!

      也許你會有疑問,既然已經得到mysql的CPU占用率了,為什么后面還有一個cut?問的好!我當初也沒想到這個問題。因為我們要比較CPU的占用率 嘛,這里我們取得的字符串是一個浮點數(帶小數點的),但是shell編程里面是不支持浮點數比較大小的。怎么辦?那就比較整數唄,以“.”分割這個浮點 數,第一個就是整數部分,這樣我們就取得了mysql占用率的整數部分。

      后面就是一個判斷,如果大于300的話就就重啟mysql服務。后面還有一個命令,這個命令是一個簡單的“日志”,目的就是當重啟一次服務就記錄一下重啟mysql的時間,便于以后分析網站的壓力情況。

      接下來就是定期執行這個程序了,根據情況可以5分鐘或者10分鐘執行一次,只要編輯 /etc/crontab文件,加入如下語句:


*/5 *   * * *   root    /home/ma6174/mysql_restart.sh


提交成功!非常感謝您的反饋,我們會繼續努力做到更好!

這條文檔是否有幫助解決問題?

非常抱歉未能幫助到您。為了給您提供更好的服務,我們很需要您進一步的反饋信息:

在文檔使用中是否遇到以下問題: