【トラブル】apacheがよく応答無しになるので調べてみました -その1(コマンド)-

スポンサーリンク

さくらのVPS512にapache+wordpressを入れてこのブログを運営していますが、最近1日1回ぐらい応答無しになってました^^; といってもこのブログのアクセス数はそんなにたいしたもんではないです。なにが悪いんだろうなと思って調べて見ましたので、その途中経過。主にfreeやらpsコマンド中心です。

症状

・ブログのURLにブラウザから接続しても応答なし
・SSHで繋ごうとしても、応答がめちゃくちゃ遅い。ssh実行後1分後ぐらいでつながる。いつもは1秒ぐらいでつながるので、激遅。
 その後コマンドを入力しても、キーボード入力→Terminalに表示までが20秒ぐらい?いつもは瞬時なので、これも激遅。
とにかく全ての動作が遅いorz

調査

さくらのVPS512上では、ほとんどこのブログ(apache+wordpress)しか動かしていない。そんなに反応が遅くなるということは原因にメモリかCPUぐらいしかないけど、CPUよりもメモリがよく不足していたのでメモリから調べてみました。

といってもSSHは上のような状態でものすごい反応が遅いので、さくらインターネットVPSコントロールパネルにログインし「リモートコンソール」からfreeなどのコマンドを実行しました。

apacheが応答なしだったときの記録

$ free
             total       used       free     shared    buffers     cached
Mem:        509792     504716       5076          0        556      16020
-/+ buffers/cache:     488140      21652
Swap:      2048276    1346444     701832

単位はKです。まずfreeコマンドでメモリを調べると、さくらのVPS512のメモリ容量512メガ(=512000キロ)をほとんど使い果たし、2ギガ割り当てられているswapのうち1.3ギガ程度を使用している、と。…メモリ使いすぎだろ(´Д`)
何回か応答無しになった時に調べてみると、どうもSwapの使用量が1ギガぐらいを越えてくると急激にサーバの反応が遅くなるようです。

ついでにapacheのプロセスを調べると

$ ps aux|grep httpd
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
apache   29309  0.5  3.0 486560 15364 ?        D    21:01   0:18 /usr/sbin/httpd
apache   29391  1.1  4.6 493636 23528 ?        D    21:26   0:19 /usr/sbin/httpd
apache   29393  1.1  2.5 484420 13236 ?        S    21:26   0:20 /usr/sbin/httpd
apache   29434  1.2  3.7 484476 18976 ?        D    21:35   0:15 /usr/sbin/httpd
apache   29477  3.2  3.4 482352 17484 ?        D    21:46   0:16 /usr/sbin/httpd
apache   29478  2.5  3.6 476208 18656 ?        S    21:46   0:12 /usr/sbin/httpd
apache   29482  2.4  4.7 480076 23984 ?        D    21:46   0:12 /usr/sbin/httpd
apache   29483  2.5  3.9 475184 20324 ?        D    21:46   0:12 /usr/sbin/httpd
apache   29484  2.3  2.3 312612 11816 ?        D    21:46   0:11 /usr/sbin/httpd
apache   29485  2.8  4.2 483376 21700 ?        D    21:46   0:14 /usr/sbin/httpd
apache   29495  2.2  2.7 480592 14144 ?        D    21:47   0:10 /usr/sbin/httpd
apache   29497  2.5  4.4 476208 22652 ?        D    21:47   0:12 /usr/sbin/httpd
apache   29499  2.3  2.9 312612 15116 ?        D    21:47   0:11 /usr/sbin/httpd
apache   29500  1.6  3.9 480592 20376 ?        D    21:47   0:07 /usr/sbin/httpd
apache   29502  1.5  3.2 480592 16364 ?        D    21:47   0:07 /usr/sbin/httpd
apache   29523  2.0  4.2 480592 21500 ?        D    21:47   0:09 /usr/sbin/httpd
apache   29524  2.2  4.3 482660 21988 ?        D    21:47   0:10 /usr/sbin/httpd
apache   29525  2.0  4.4 483684 22580 ?        D    21:47   0:09 /usr/sbin/httpd
apache   29527  1.8  3.3 482660 17184 ?        D    21:47   0:08 /usr/sbin/httpd
apache   29528  1.8  3.3 480084 16992 ?        D    21:47   0:08 /usr/sbin/httpd
apache   29529  2.0  4.5 480592 23172 ?        D    21:47   0:09 /usr/sbin/httpd
apache   29530  1.6  3.1 479568 15968 ?        D    21:47   0:07 /usr/sbin/httpd
apache   29531  1.1  4.3 479584 21988 ?        D    21:47   0:05 /usr/sbin/httpd
apache   29532  1.4  3.3 479568 16992 ?        D    21:47   0:06 /usr/sbin/httpd
apache   29533  2.1  3.6 480592 18832 ?        D    21:47   0:09 /usr/sbin/httpd
apache   29545  1.2  3.7 479568 19176 ?        D    21:48   0:05 /usr/sbin/httpd
apache   29550  1.3  4.4 477780 22604 ?        D    21:49   0:04 /usr/sbin/httpd
apache   29551  0.5  6.6 462416 33932 ?        D    21:49   0:01 /usr/sbin/httpd
apache   29574  0.0  0.7 414768  3820 ?        S    21:54   0:00 /usr/sbin/httpd

なにこの大量のapache軍団はorz 「もうやめて!apacheの残りメモリはとっくにゼロよ!」というセリフが頭の中をよぎった。

psコマンドでの出力の場合、4番目の項目が全体に対するメモリ使用量、5番目(VSZ)が仮想メモリ使用量、6番目の項目(RSS)がプロセスのメモリ使用量(単位はキロ)。計算していくとapacheだけで仮想メモリ12ギガ程度(VSZの合計)、物理メモリ512メガ程度(RSSの合計)を使用している。仮想メモリが大変すぎるorz そりゃ反応なくなるわ。プロセスがいくらなんでも起動しすぎのような…

とりあえずSSHだと非常に遅くて対処しづらいので、さくらインターネットVPSコントロールパネルのバーチャルコンソール上から

# apachectl restart

と、apache再起動で治ったけど…最近少しこういう状態が多いので、次は設定ファイルを調べてみようと思います。

—-参考リンク
【 ps 】 実行中のプロセスを表示する – Linuxコマンド集:ITpro
ps auxの見方 | OpenMediaLaboratory