さくらのVPSでスワップが増大してサーバー落ちたので再起動

※記事内に商品プロモーションを含む場合があります

昨日(9月1日)メールが受信できないので
同じサーバで運用しているサイトを見ようとしても
真っ白で見ることができませんでした。

そこで、SSH接続を試みたのですが
SSH接続もダメでした。

サーバーはさくらのVPSを使用しているので
さくらのVPSコントロールパネルから見てみたら
CPU負荷が高くなっていました。

スワップが増大してサーバが落ちた

上はさくらのVPSのコントロールパネルのグラフ。

上から、CPU負荷、トラヒック、ディスクI/Oとなっています。

CPU負荷が高くなる前にディスク(DISK I/O)の数値が
上がっているのでスワップが増大している可能性があります。

スワップとは

スワップはスワップメモリの事で、Windowsパソコンにも
同じ仕組があります。

物理メモリが足らなくなってきたら、物理メモリ上の使用頻度の
低そうなデータをディスクに書き出します。

このディスク書き出しの事を、スワップアウトと言います。

当然、メモリの一部がHDDになる様なモノなので
システム全体のパフォーマンスがガタ落ちです。

昔、Windows95時代のパソコンが常時HDDがガリガリ音を出して
いたのは概ねスワップアウトが発生していたからです。

あの頃はメモリが32メガバイトとか言うパソコンが
普通にありましたからね。

スワップが多いと何故サーバが落ちるのか?

スワップメモリを使い果たしたり、
負荷が増大すればサーバが反応しない状態。

俗にいう、サーバが落ちたと言う状態になります。

スワップが発生するとパフォーマンスが落ちるので
高負荷な状態でメモリ不足が発生するとスワップアウトが発生し
処理速度が落ちる事でさらに処理に時間が掛かるという
悪循環に陥ります。

今回は、最終的にハングアップした様です。
そうなると、SSHも反応無く(反応あってもとても遅い)どうしようも無い
ので再起動しか方法はありません。

サーバダウンは再起動で直る

再起動を行って約1日経過しましたが、
CPU負荷は正常に戻っています。

サーバー再起動後は何事も無かったかの様です。

根本的な対策が必要

再起動すれば、サーバーダウンは直りますが
出来れば何が原因でダウンしたか調査した方が良いでしょう。

それか、サーバーが高負荷になったらメール通知して調査するか。
【関連】サーバのモニタリンクと異常通知用PHPスクリプトを作った

私の場合は、たぶんWordPressがメモリを使い果たしていたっぽいので
Apacheの設定を変更しました。

具体的にはmpmの設定でMaxClientsを減らしました。
現在mpmはpreforkですがMaxClientsは70です。