まずは右のキャプチャを眺めていただくと一目瞭然なのだが長いとこCentOSのロードアベレージが上がり続けるという呪縛に苦しんでいた。遡ること忘れもしないあれはCentOS 5.4が出たときだった。およそ3ヶ月前の話になる。喜び勇んで更新したのは良かったが,しばらくしたらコツコツと負荷が上がり続けるという現象に遭遇してしまった。大体1時間に1くらいあがる。最初に気付いたときはいつになくサーバ大流行りジャン!などと悦に浸ったのだがログみてガックリ。ちなみにロード値1というのは100%ということなので普通だとちょbit重くなったという感覚を持つのだがログインしてもコンソールはサクサク動くしI/Oもプロセスも滞っていない。ただtopやuptime叩くとCPUのload avgが増殖し続けるという現象だった。黙っているとロード値数百なんてまで上がるところまでは確認した。実運用上のサーバであったが実害は無さそうだったのでしばし放置しておいた。偶然(?)手持ちのサーバでもう1台だけ同じ現象になり同様に悩んだのだが,共通することはCentOSのx86_64を使っていることだった。原因を把握するべく再現環境を作ってみたけど再現しなかったのでカーネルのバグじゃないかという憶測で留まり,唯一の対策はCentOSのカーネルアップデートが出ればソッコーであて再起動するという消極的なものだった。
気長に捉えていた問題だが,ロード値が高いとsendmailが仕事をサボり始める弊害なども出てきたので毎日再起動という情けない対応なんかをしていたのは冒頭のノコギリ波をみれはわかるだろう。
そんな日々を悶々と過ごしていた俺だがやっと閃いた!
犯人はXenカーネルだった。いつか使うだろうと使いもしないXenというか仮想OS環境を入れていたのが地雷だった。
切っ掛けは仮想OS遊びでCentOSならXenじゃなくてKVMだろと体質改善始めた時に気がついたのだった。まとめるとCentOS 5.4のXen付きx86_64カーネルを使っていると地雷フラグが立つふいんき(←なぜか変換できない)
ということでyumでさっくり仮想OS環境を削ったらなんとまぁロード値が落ち着いた。長々能書き垂れたが実際に叩いたコマンドは次の一行
sudo env LC_ALL=C yum -y groupremove Virtualizationこれだけだ。もし同様にハマっている人がいたらお試しあれ(無保証)。参考までに手持ちのサーバ2台は長年の高負荷呪縛から脱出した。
でKVMを楽しんでいそうだけど実際遊んでいるのはVMwareだったりするのはヒミツ。
最近のコメント