自分のサーバで稼動させているMySQLのレスポンスが悪いときがあり、調査したいと思っていたのですが、mMeasure というツールがあることを知りました。
ちなみにサーバ環境は、RedHat Linux 8.0、MySQL-5.0.24a です。
mMeasure Porject
http://mmeasure.sourceforge.jp/
このツールを使うと、MySQLの稼動状況をリアルタイムにグラフ化してくれる上に、パフォーマンスに影響する設定項目の不備を指摘してくれるらしいです。
まずは本体をダウンロードしました。
mMeasure
http://osdn.dl.sourceforge.jp/mmeasure/18557/mmeasure-1.0.7.tar.gz
ドキュメントを読むと、RRD-TOOLというものが必要だということなので、ダウンロードしてインストールしました。RRD-TOOLというのはMRTGでも使われているラウンドロビンデータベースを実現するものらしいです。
rrdtool
http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/pub/libs/
RRD-TOOLの configure 中に、freetype2 がない、という警告が出たのでダウンロードしてインストール。
freetype2
http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/pub/libs/
さらに RRD-TOOL が libart というパッケージも要求しているようなのでダウンロードしてインストール。
libart
http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/pub/libs/
ここまで揃ったのでドキュメントにしたがって mMeasure を設定して起動させました。…が、どうもエラーが出ているらしい。/usr/local/mmeasure/daemon/log/mmeasure.log の内容を見ると、下記のようなエラーが出ています。
Can’t locate RRDs.pm in @INC (@INC contains: /usr/lib/perl5/5.8.0/i386-linux-thread-multi /usr/lib/perl5/5.8.0 /usr/lib/perl5/site_perl/5.8.0/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.0 /usr/lib/perl5/site_perl
/usr/lib/perl5/vendor_perl/5.8.0/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.0 /usr/lib/perl5/vendor_perl .) at ./read-data.pl line 18.
BEGIN failed–compilation aborted at ./read-data.pl line 18.
RRDs.pm がないということでアレコレしらべてみたら、ソースツリーの中に RRDs.pm のディレクトリがありました。
cd bindings/perl-shared
perl Makefile.PL
make
make install
スロークエリーの調査
MySQLでは、処理に時間がかかったクエリーを「スロークエリー」と呼ぶらしいです。どれくらい時間がかかったらスロークエリーにするのかというと、これは /etc/my.cnf に自分で秒数を設定します。
私の環境では /etc/my.cnf が存在しなかったので、必要事項だけを記入したファイルを作成しました。
[mysqld]
set-variable=long_query_time=1
スロークエリーを保存する指定は mysqld の起動時のオプションで指定します。/etc/rc.d/init.d/mysql を編集しました。
$bindir/mysqld_safe –datadir=$datadir –pid-file=$server_pid_file –log-slow-queries=/var/lib/mysql/slow_query.log $other_args >/dev/null 2>&1 &
/etc/rc.d/init.d/mysql start
としたところスロークエリーログが作成されましたが、パーミッションが 660 になっていてmmeasureから読み込めなかったので chmod 666 slow_query.log としました。
0件のコメント