国产欧美日韩第一页|日本一二三不卡视频|在线精品小视频,亚洲第一免费播放区,metcn人体亚洲一区,亚洲精品午夜视频

shell腳本檢測(cè)監(jiān)控mysql的CPU占用率

2016-06-15 08:04:17 4720

網(wǎng)站訪問(wèn)量大的時(shí)候mysql的壓力就比較大,當(dāng)mysql的CPU利用率超過(guò)300%的時(shí)候就不能提供服務(wù)了,近乎卡死狀態(tài),這時(shí)候最好的方法 就是重啟mysql服務(wù)。由于這種事具有不可預(yù)見(jiàn)性,我們不知道什么時(shí)候mysql的占用率達(dá)到300%,還是寫(xiě)個(gè)程序定期判斷比較靠譜。

        學(xué)了shell編程,寫(xiě)了下面的腳本:

#!/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

 

       稍微解釋一下。首先執(zhí)行"ps aux"命令獲取所有系統(tǒng)進(jìn)程的狀態(tài)信息,包括CPU,內(nèi)存等,如下圖:

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

      接下來(lái)的一個(gè)cut是截?cái)嘧址覀円y(tǒng)計(jì)的是CPU的占用率,當(dāng)然要截取mysql的CPU數(shù)值,cut命令默認(rèn)是用tab分割的,但是ps aux顯示的字符串中的空白是空格而不是tab,我們就要用空格來(lái)分割,有的字符串之間是多個(gè)空格,這里的 -f8 參數(shù)就是截取第8個(gè)字符串(有的系統(tǒng)可能是第6個(gè)),這個(gè)字符串就是mysql的CPU占用率啦!

      也許你會(huì)有疑問(wèn),既然已經(jīng)得到mysql的CPU占用率了,為什么后面還有一個(gè)cut?問(wèn)的好!我當(dāng)初也沒(méi)想到這個(gè)問(wèn)題。因?yàn)槲覀円容^CPU的占用率 嘛,這里我們?nèi)〉玫淖址且粋€(gè)浮點(diǎn)數(shù)(帶小數(shù)點(diǎn)的),但是shell編程里面是不支持浮點(diǎn)數(shù)比較大小的。怎么辦?那就比較整數(shù)唄,以“.”分割這個(gè)浮點(diǎn) 數(shù),第一個(gè)就是整數(shù)部分,這樣我們就取得了mysql占用率的整數(shù)部分。

      后面就是一個(gè)判斷,如果大于300的話就就重啟mysql服務(wù)。后面還有一個(gè)命令,這個(gè)命令是一個(gè)簡(jiǎn)單的“日志”,目的就是當(dāng)重啟一次服務(wù)就記錄一下重啟mysql的時(shí)間,便于以后分析網(wǎng)站的壓力情況。

      接下來(lái)就是定期執(zhí)行這個(gè)程序了,根據(jù)情況可以5分鐘或者10分鐘執(zhí)行一次,只要編輯 /etc/crontab文件,加入如下語(yǔ)句:


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


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

這條文檔是否有幫助解決問(wèn)題?

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

在文檔使用中是否遇到以下問(wèn)題: