本日、サーバーのCPU交換を行いました。
昨年10月頃から稼働させているサーバーですが、気がつくとリブートしてしまっているという症状が最近時々発生するようになりました。コアダンプして停止してくれれば画面の情報を見て見当を付けられるのですが、画面を見ていないときにいきなりリブートしてしまうため、正常に動作していた時間をいろいろなログから集めて、リブートした時刻直前に何が起きていたか推測することになります。
最近思い当たる点としては、
- 室温の上昇: 冬場には発生しなかったので、最近の気温上昇でCPUを十分冷やせていないのかも。
しかし、マザーボードには温度センサーが付いているはずで、それが反応しているような症状はありません。 - CPU負荷: 4月以降、サーバーへのアクセス集中がひどくなるタイミングがあり、ユーザーのアクセスと検索エンジンクローラーと侵入を試みる馬鹿者のアクセスが偶然重なってLoadが10を越える場合があり、いきなりHDD、恐らくスワップ、がガリガリ言い始める。(遅くはなりますが、その程度でOSが落ちることはないはずなのですが、、、、)メモリも大量に消費しているはずなので、ひょっとするとメモリに温度特性の悪いブロックの不良があって、偶然そこがプログラムに使われているのかも。
- スワップ内セクターの異常:突然リブートが発生する時は、その前に、だいたいスワップが20%を越えているのでスワップパーティション内に異常セクターがあるのかも。
という感じです。要するに、原因が何かわからないけど、サーバーが忙しくなると落ちる確率が増すように思えるってことです。
夏場を控えてこのままサーバーを運用するのは不安があるため、面倒ではありますが、切り分け作業を開始することにしました。
室温が上昇して発生し始めたので、とりあえず一番関係が深そうなCPUをもっと冷やすことから手を着けることにします。本日、PCを停止させヒートシンクとファンを大型のものに交換しようとしました。しかし、使っていたCPUは、ヒートシンクとCPUが一体化しているBOXタイプのAMD純正 K6-2 450MHz だと判明。マイナスドライバーでゴリゴリこじればCPUとヒートシンクを分離できるかもしれませんが、再利用できなくなると困ります。先日電源が壊れて使えなくなった薄型LPX PCがK6-2+ 500MHzだったことを思い出し(このPCはダウンすることが無く、常に快調だった)CPUとヒートシンクをそのまま流用することにしました。
CPUとヒートシンクを交換した後、マザーボードのCPUコア電圧と倍率ジャンパーを変更して交換終了。久しぶりにコア電圧と倍率を触りましたよ。
CPU交換の他、ついでにCPUソケットに一番近いファンを排気から吸気方向に変えてみました。(ファンを裏返して取り付けた。)
現在、サーバーは起動して、負荷を掛けている状態ですが、今のところ落ちていません。CPUの放熱ということで正解だったのかも。
もし再発するようだと、次はメモリを挿しているスロットを替えてみるとか、スワップ用HDDを別のものにしてみるとか、次のステップが必要になるので、このまま治まって欲しいところです。
それしても、K6-2 から K6-2+ に替えて、周波数が50MHzと二次キャッシュが128kB追加されただけですけど、サーバーのレスポンスがかなり良くなった気がします。リブートしてから時間が余り経過していなくてスワップアウトしていないだけかもしれませんが。
追加情報
swapinfo コマンドを発行してみると、2台あるはずのスワップHDDのうち片方が認識されていないことが判明。もう一度シャットダウンしてPCをチェックしてみると、ヒートシンク取り替えとジャンパー取り替え作業の時にIDEケーブルと電源ケーブル両方がHDDから外れてしまったようで /dev/ad3 (2nd IDE slave) が動いていませんでした。ad3をオンライン状態に戻しましたが、ad3 は起動時BIOS画面からも消えることがあるため、ひょっとするとこっちの方がが原因なのかもしれません。夜間 Boinc でCPUに負荷を掛け続けてみて、再発した場合、fstab から ad3 をコメントアウトして停止してみるというのが次のアクションとなりました。
また、今後しばらく、別のクライアントでたくさんターミナルエミュレータを開いてサーバーに接続し、 「 tail -f 」でログを継続表示状態にしておきます。ダウンしないでくれるとありがたいのですが、もしサーバーが勝手にリブートしても、ターミナルエミュレータ画面は残っているはずなので何か重要な情報が残るかもと期待しています。