2016年8月31日水曜日

8月29日の再度のフィード取得障害について

いつも Feedeen のご利用ありがとうございます。運営者の伊藤です。

先日の障害があったばかりで心苦しいのですが、8月29日にも約3時間程度にわたってフィードアイテムの取得が停止する障害が発生いたしました。再びご迷惑をおかけすることになり、たいへん申し訳ございません。今回の障害は前回とは異なり、クローラのプロセスがファイルディスクリプタと呼ばれるリソースを使い切ってしまったことで発生しました。以下に障害の内容と対策を説明させていただきます。


障害発生の経緯


8月29日の17:30頃(日本時間)、フィードアイテムを取得する処理のうち、フィード配信元から RSS 等のデータを取得する部分(以下クローラ)で障害が発生し、処理が停止しました。これにより他の部分にもデータが供給されなくなるため、新規の更新が完全に停止することになりました。

19:30頃になり、運営者が異常なエラーを発見し、調査を開始しました。ただ、このとき運営者は外出中で、手持ちのiPhoneからサーバーに接続しての作業だったため、非常に時間を要しました。ようやく20:30頃、クローラを再起動し、暫定的に処理を復帰させました。

運営者の帰宅後、一定時間クローラの動作を監視した後、23:00頃に短時間だけクローラとその他のバックグラウンド処理を停止し、念のため仮想マシンを再起動した後に処理を復帰させました。

以上が障害発生から復旧までの経緯です。


障害の原因


今回の障害の原因は、前述のとおりクローラがファイルディスクリプタを使い切ってしまったことです。このため新規のプロセスの起動にも支障が生じ、エラー終了したクローラの再起動を繰り返す状況に陥ってしまいました。

ファイルディスクリプタを使い切った原因は特定できておりませんが、現象発生時にネットワークの遅延が発生していた形跡があるので、それがきっかけと考えられます。ただ、これまで同様の現象が発生したことはなく、他の要因も関係しているものと思われます。

また、クローラの再起動を繰り返す現象については、再起動失敗のエラーを正しく処理せず、他のエラーと同様にリトライを行ってしまったことが原因です。したがって、再起動失敗時はクローラ全体を終了させ、より上位のプロセスマネージャに再起動を任せることで対処可能です。


今後の対応


現在、データ構造の変更に伴ってクローラにも多くの修正を行っておりますので、それと並行してクローラ再起動処理の修正も進めてまいります。

それらの修正を適用するまでは、当面の間クローラの動作を注視しつつ、念のため一日に一回程度クローラ全体の再起動を行います。


発生原因が異なるとはいえ、フィードアイテム取得処理についての障害を繰り返すことになってしまい、大変申し訳ございません。今回も障害についてご報告くださった方々がおられますので、この場にて恐縮ですが御礼申し上げます。

先日の障害と合わせて対策を進めてまいりますので、今後ともよろしくお願いいたします。



0 件のコメント:

コメントを投稿