人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Linuxで運用しているWebサーバがあり、最近レスポンスが悪いので調べてみると、CPUのiowaitの値が高いためということが判明しました。
しかしながら、このホストは以下のサービスも稼働しているのでどのサービスがIOを食っているのかが判定しづらいです。
・Apache+PHP
・MySQL
・qmail,dovecot
・nagios
・djbdns

topで見ても、プロセスのステータスが表示されるのは一瞬で傾向がつかめません。
どのプロセスがIO待ちに時間を消費しているか判定する方法はあるでしょうか?

ちなみに、以下の方法を試しました。
・topでプロセスのステータスを表示→傾向がつかめず。ステータスがIO待ちであるDになるのは一瞬で、apache,MySQLがたまにDになる。
・iostatを表示→スループットなどは出るが、どのプロセスが原因かわからない。

muninのCPU利用情報を添付します。AM5:30から3時間ほどバックアップのため、CPU負荷が高くなっています。

1249092564
●拡大する

●質問者: まつぼっくり
●カテゴリ:コンピュータ インターネット
✍キーワード:Apache CPU djbdns dovecot Linux
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● pahoo
●10ポイント

ps u -A

でプロセス毎のリソース消費状況は確認しましたか?

◎質問者からの返答

確認しております。

50回ほど連続して実行しましたが、ステータスがDになっているプロセスは発見できないです。

物理メモリ不足によるスラッシングではなさそうです。

free領域がが137MBあります。

% free -m

total used free shared buffers cached

Mem: 256 251 4 0 14 117

Swap: 1023 115 908


30秒ごとのvmstatを添付します。

% vmstat 30

procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----

r b swpd free buff cache si so bi bo in cs us sy id wa

2 0 118684 10228 8960 122688 4 1 523 179 18 14 12 2 70 16

1 0 118684 6900 9800 125176 0 0 104 259 144 163 7 3 81 9

1 1 118684 5532 9992 127208 1 0 68 28 87 117 3 1 90 6

4 0 118692 7688 9252 127080 2 0 249 138 107 186 8 2 79 11

0 0 118692 6552 9344 127260 0 0 7 46 65 88 1 0 97 2

1 1 118684 3012 8812 130168 2 0 145 91 99 155 4 1 82 13

0 0 118684 3888 8580 123956 2 0 175 86 163 128 3 0 79 18

0 0 118684 8800 8288 119404 1 0 42 30 97 178 1 1 94 4

0 0 118680 3548 8320 123780 1 0 290 108 124 178 3 1 81 15

2 0 118672 6804 7884 114872 2 0 328 123 135 233 6 4 74 16

3 1 118672 2812 9932 118584 1 0 193 161 135 606 13 2 70 15

0 0 118672 2880 10232 119096 0 0 89 45 90 161 3 1 88 8

2 0 118672 5140 18528 108804 0 0 365 112 151 191 1 1 79 20


2 ● BlueSkyDetector
●36ポイント

http://guichaz.free.fr/iotop/

iotopを使ってみてはどうでしょうか。

そしてwebのレスポンスに影響が大きいプロセスに対してioniceでI/Oの優先度を上げてみてはどうでしょう?

ただし、iotopは

It requires Python ? 2.5 and a Linux kernel ? 2.6.20 with the TASK_DELAY_ACCT and TASK_IO_ACCOUNTING options enabled.

になります。

こんな感じで kernel ? 2.6.20 を回避している方もいました。

http://d.hatena.ne.jp/kurosaka/20080728/p1

◎質問者からの返答

iotop試しましたが、kernelがIO周りの統計を出すようにコンパイルされていませんでした。

ioniceありがとうございます。はじめて知りました。

根本的な問題を発見して解決したいです。


3 ● すかなび
●10ポイント

どのようなLinuxを使っているのかわかりませんが、Kernelが比較的新しいものであればiotopでI/Oの足を引っ張っているプロセスを特定してみるのはどうでしょうか。

http://gigazine.net/index.php?/news/comments/20080727_iotop/

◎質問者からの返答

kernelが対応していないので使えないです。

VPSにて稼働する、xen用kernelなのでkernelを入れ替えることは困難です。。。

% uname -a

Linux xxxxxxxxxxxx 2.6.16.13-xenU_3.0.2.3_4.centos4.5 #1 SMP Thu Jan 11 12:29:52 JST 2007 i686 i686 i386 GNU/Linux


4 ● kmond2
●34ポイント

VPSの種類にもよりますが、仮想マシンから見た場合、他の仮想マシンがCPUを専有している状態はIO-waitとして表れるものが多いですね。ご質問のケースも、そういうことなのではないでしょうか。

VPS提供業者に、仮想OSのwait状態のデータを開示させた方が解決が早いと思いますよ。


ああ、コメント者の中にVPSのことを知らない人が一人混じっていますね。

知らないならコメントなんかしなければいいのに。

◎質問者からの返答

> 他の仮想マシンがCPUを専有している状態はIO-waitとして表れるものが多い

参考にさせていただきます。

もう少しアプリケーション周りを調べて、解決しなさそうだったらISPへ問い合わせようと思います。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ