サーバの負荷の原因となっているファイルを調べる

20111228-omoinohadore.jpg

サーバにオープンソースのシステムを入れている場合、負荷軽減の為に
どのファイルが負荷がかかっているか、どのクエリが繰り返し実行されているか、
また、呼び出し回数が殊更多いファイルなどを特定して対処することは大事だと思います。

なまじオープンソースだと、全てのファイルの処理を把握しているわけではないのでどこをいじれば負荷軽減に繋がるかを手探りで探すとえらい手間になります。

なので、そういったニーズを解消するために

Apacheのアクセス状況をリアルタイムで確認できる「apachetop」と
MySQLのクエリ状況をリアルタイムで確認できる「innotop」を入れてみた話。

OSはCentOS5.7です。


apachetopをyumでインストール

dagリポジトリを使ってyumでインストール。
dagリポジトリの設定などは割愛。

#apachetopを入れる
yum --enablerepo=dag install -y apachetop

起動させるには、Apacheのログファイルのパスを指定する必要がありますので、
事前にApacheのログが出力されるようにしておく必要あり。
とは言っても設定ファイルをいじっていなければログファイルは通常出力されますので気にすることもないかも。

# 起動
apachetop -f /var/log/httpd/access_log

出力はこんな感じです。

innotopをインストール

もともとはmytopというツールがあったのですが、MySQL5以上の場合だと
一部を書き換えないと正しく表示されない箇所があるそうなので、
MySQL5以上ならinnotopを使うほうが良いらしいです。

# innotop ソースダウンロード
wget http://innotop.googlecode.com/files/innotop-1.8.0.tar.gz
tar xvfz innotop-1.8.0.tar.gz
cd innotop-1.8.0

“perl Makefile.PL”をしようとしたら
「ReadKey2.1 not found」 と出たので先にReadKeyを入れる

# ReadKeyインストール
cpan install Term::ReadKey
(他にもnot foundと出るものがあれば適宜CPANでインストールする必要があります。)

CPANで必要なものをインストールしたら改めてMakefileを作成
perl Makefile.PL
make
make install

これでインストールは終わりです。

ただ、他の解説ページを見るかぎりでは初回起動で設定画面が出るそうなのですが、
こちらの環境では何故か出ませんでした。

そんな場合は起動時にユーザ名とパスワードを入れてinnotopを起動させればOKみたい。

#innotop 起動
innotop -u(MySQLユーザ) -p(MySQLパスワード)

出力。

こういうので細かく見てみると、意外な伏兵が潜んでいたりする罠。

大阪の江坂でウェブ制作をしている、インフラもシステムもデザインもディレクションもできるエンジニア。 広く浅く薄っぺらくですが(笑)

Leave a reply:

Your email address will not be published.