パスワードを忘れた? アカウント作成
168811 journal

hylomの日記: 緊急事態発生 11

日記 by hylom

お気付きの方もいらっしゃるかとは思いますが、昨日の夕方、/.Jが数時間に渡って止まっていました。まず、/.J読者の方にご迷惑をおかけして申し訳ありませんでした。お詫びを申し上げます。

で、何が起こっていたのかというと、どうやら下記のような感じだった模様です。

  1. /.Jのメインサーバーでプロセスが1個暴走、killも効かない
  2. →しょうがないので頃合いを見計らってリブートを試みる
  3. →リブートされない、しかもサーバー本体はデータセンター内なので様子も分からない、コンソールにも繋がらない
  4. →しょうがないので運営チームデータセンターへ直行
  5. →現地で直接コンソール叩いて復旧

以下、運営担当HANZUBON氏によるレポート。

  • 11月25日の朝からcutコマンドのプロセスがCPUを食いつづけたまま延々と動き続けている。しかし特に何かを出力するわけでもなく、メモリを食うわけでもなく、ただ実際の負荷が上がってる状態
  • このcut自体は/etc/init.d/slashdから呼ばれている模様。具体的には「cat /usr/share/slash/slash.sites | cut -d # -f 1」という感じだが、slash.sites は2行しかないテキストファイル。確認した時点でこのpipeの元のcatプロセスはすでにいない
  • killであらゆるsignal送ってみたが反応せず
  • このcutプロセスにstraceとかgdbを挿してみたが、プロセスにささる状況までいかずにstraceもgdbもハングアップする。/proc経由で該当プロセスを弄ろうとしてもダメ
  • このプロセスがCPUリソースを消費しているためこのマシン上で動かしているNFSサーバーが不安定に。

という感じで、KILL signal にも反応しないことからカーネル内で問題が発生しているのではと推測され、普通の手段ではどうにもならないのでリモートからrebootを行う(15:31)。しかしその後反応なし。状態を確認しようと管理コンソールにつなごうとしたがつながらず、リモートでの復旧をあきらめてデータセンターに向かうことに(16:40)。

18:10頃、データセンターに入館して作業開始。shutdownの途中でマシンが止まっていたので電源断して強制停止→再起動。fsckが走って、10分程度後に再起動。その後動作確認、ロードバランサの設定などを行って復旧(18:36)。

ちなみに、なぜこのような問題が起きたかはいまのところ不明。カーネル内で何か起きたようなので、カーネルのバグではないか?

リブートにかかる数分だけ停止する予定だったので特にメンテナンスの案内等も出さなかったのですが、結果として長時間の停止となってしまい申し訳ありませんでした……。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • by KyaTanaka (6370) on 2009年11月27日 13時42分 (#1679166) 日記

    と、ねぎらいの一言をかけるくらいしかできない一利用者ではありますが、心中お察しいたします。

    昨日「メンテナンス中です」の画面が出て「ありゃ? そんなアナウンスあったかな? なかったとすりゃトラブルか?」とは思っていましたが。

    --
    KyaTanaka
    • by parsley (5772) on 2009年11月27日 15時59分 (#1679287) 日記
      お疲れさまでした。まさかそんな大事(おおごと)になっていたとは。
      昔はこれぐらいの停止当たり前(?)だったのにね(ぉぃぉぃ

      # そもそもLB経由でメンテ画面出せるようになったのもつい数年前
      --
      Copyright (c) 2001-2012 Parsley, All rights reserved.
  • で、その kernel ごと暴走したと思われるマシンの kernel dump は取得されましたか?

    さ、みんなで デバッグ祭りだ (^o^)/

    --
    fjの教祖様
    • (等のハードウェア障害)の可能性の排除が、この比較的低頻度且つ重篤な症例の場合には、ソフトウェアバグの特定の前提かと。各層のキャシュの障害の可能性も考えると、主メモリ及び各層キャシュのダンプを採るにも予め専用のハードウェア等の具備が必須でしょう。

      # 原因が何にせよWDTとかで自動で再起動(、予備系への代替又は死亡フラグ掲揚)ができないのか? だとしたら∗n∗x系OS(当然Win∗は論外)の家電や軽鯛等への安易な搭載は危険ですね。ましてフェイルセーフが難しい医療や運輸交通やエネルギーや宇宙等への適用は(現時点では)止めですな。
      • > WDTとかで自動で再起動(、予備系への代替又は死亡フラグ掲揚)ができないのか?

        そー言う展示を今年のITproEXPOで山ほど見てきました。プロセスが死んでるか生きてるか監視して、死んでるのを確認したらプロセス単位で予備系に切り替えるとか、そのプロセスが走ってる仮想サーバを予備系に切り替えるとか、その切戻しとか。

        医療用機器のように瞬断がむちゃくちゃクリティカルな現場では採用されてるかどうかわかりませんが、家電のように瞬断程度なら問題ないとこならそれでいいのかも。

        --
        KyaTanaka
      • 各層のキャシュの障害の可能性も考えると、主メモリ及び各層キャシュのダンプを採るにも予め専用のハードウェア等の具備が必須でしょう。

        カーネルダンプが取れなければ、ハードウェア障害の可能性を疑えばよい。
        カーネルダンプが取れる程度の障害なら、ダンプを解析すれば大抵ソフトのバグが見つかる。

        もちろん、その中間の「デバイスドライバーの暴走」とかも実際にはありえるが、そのような状態でプロセスが生きているとは思えない。login していろいろ操作できたのだから、スケジューラ周りは生きていたはずだ。

        というわけで、十中五六、ダンプは取得可能だったでしょうし、取得したら見つかるのはソフトウェア障害だと思いますよ。
        「どうせリブートするのであれば」ダンプを取ろうとしてみる、というのがよいかと。

        --
        fjの教祖様
  • by Anonymous Coward on 2009年11月27日 14時15分 (#1679197)
    私も一介のLinux(Debian)のユーザーですが、普通に使うだけでも時々、問題があります。
    私たちの場合は、ハードにすぐアクセスできるので、電源を入れ直すだけでOKですが、
    データセンターに到着までの道中の様子を想像し心中察しいたします。
    本当に、本当に、お疲れさまでした。

    ACで失礼!
  • こういうリモートで反応無くなったときにこそリモートKVM(またはiLO)あたりが欲しくなります。
    が、そういう機会は早々起こらないし機材は高価だし手が出ませんが…。

    なにはともあれ、おつかれさまでした。
  • by 90 (35300) on 2009年11月27日 18時34分 (#1679433) 日記

    "/login.plへのPOSTは許可されていません"なんてメッセージが出てびっくりしました。何はともあれ、お疲れ様です。

    で、吊るし上げ 断罪 ヤジウマ記録のためにストーリを一本立てては頂けないでしょうか? アレたまと右サイドバーだけの「緊急事態発生」の表示だけでは、何があったのか分からない人も居そうですし。

    • Re: (スコア:0, オフトピック)

      実はストーリーをたてようとしたのですが、ここだけの話(汗)、広告が出ている関係上サイトが長時間止まったことが話題になると問題になる可能性があるとのことで止められました……。

      ということでここでひっそりと告知という次第に。

  • おつかれさまです。
    どうもありがとうございました。

    --
    SlashPlus [twitter.com] タレコみをつぶやき中
typodupeerror

192.168.0.1は、私が使っている IPアドレスですので勝手に使わないでください --- ある通りすがり

読み込み中...