ノリブログ?

mysqlクエリとCPU状況をシェルスクリプトで監視

カテゴリー:Linux

使用してるサーバに負荷がかかっていてmysqlが原因として疑われたのでCPUの状況とMysqlの実行中クエリを表示するシェルスクリプトを組んでみました。
まず、mysqlの実行中クエリを取得する方法について調べてみると以下のSQLで得られることがわかりました。

 show full processlist;

次にこのSQLをmysqlにログインせずにコマンドとして送って結果の出力を得られないか調べてみました。
以下のようなコマンドで、結果を得られるようです。-pの後に、スペースをはさまずにパスワードを入れてるところがポイント。

  mysql -uuser -ppassword -e 'show full processlist'

ということで、これをつかって以下のようなシェルスクリプトを書いてみました。

if test -f $1;
then
num=0
else
num=`expr $1 + 1`
fi

while [ $count -ne $num ];
do
date
echo ' '
top -c -b -n 1 | head
echo ' '
mysql -uuser -ppassword -e 'show full processlist'
count=`expr $count + 1`
echo ' '
echo '********************************************************************'
echo ' '
sleep 3
done

使い方は、上のコードをfilename.shという名前で保存後、"filename.sh 実行回数"と実行すると指定した回数だけ3秒間隔でtopコマンドでとってきたCPUの状態とmysqlで実行中のクエリが表示されます。
ちなみに、回数の指定がないときはCtrl+Cが入力されるまで実行される。
↓実行例

 filename.sh 3

関連記事

Track Back URL

name
E-mail(省略可)
URL(省略可)
コメント