2016年8月31日水曜日

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

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

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


障害発生の経緯


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

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

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

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


障害の原因


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

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

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


今後の対応


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

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


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

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



2016年8月27日土曜日

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

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

8月25日に発生したフィード取得の障害では、皆様に多大なご不便をおかけしてしまい、たいへん申し訳ありませんでした。発生した障害と対応の内容、今後の対策などについて、以下に説明させていただきます。


障害の経緯


8月25日の午前10時頃(日本時間)、フィード取得などを行うサーバー(以下、バックエンドサーバー)で障害が発生し、新たなフィードアイテムの取得とOPMLのインポート機能などが停止または利用できない状態となりました。

その際、運営者の不注意にて障害の通知メールを見逃してしまい、長時間に渡って停止状態が続くこととなってしまいました。この点は今回の障害の最大の反省点であり、対策を講じていきたいと考えております。たいへん申し訳ありませんでした。

その後、夕方頃より障害に気づかれた方々からご報告をいただき、運営者も障害を認識することができました。そして復旧作業の後、およそ19時頃にフィードアイテムの取得を再開しました。

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


障害の原因と対応内容


障害の直接的な原因は、バックエンドサーバーの仮想マシンがなんらかの理由で停止したことです。クラウドサービス(AWS EC2)であるため停止の詳細な理由は不明ですが、ハードウェアレベルの障害が発生した模様です。

既に再起動やシャットダウン等の操作も受け付けない状態となっていたため、代替のバックエンドサーバーを新たに構築し、差し替えることで対処いたしました。


今後の対策


前述のとおり、せっかくの障害通知メールを運営者が見逃したことで、本来ならば速やかに復旧できた障害を、長時間に渡り放置することとなってしまいました。

見逃しの原因として最も致命的だったのは、通知メールを日常的に利用するメールアカウントで受け取っており、雑多なメールに紛れた状態だったことです。とくに現在はクローラなどの改修作業を行っている都合上、軽微な警告ログも念のためメール通知しており、事態がより悪化しておりました。

このような見逃しの対策として、サービス断に繋がるような重要なイベントは通常のメールとは別の手段(作業マシンでのデスクトップ通知やiPhoneのダイアログ通知など)で監視する環境を構築しました。個人で運営しておりますので24時間体制の監視は不可能ですが、今回のように無為に障害を長引かせることは避けられると考えております。

加えて、今回のようなハードウェア障害に対処できるものではありませんが、アプリケーションレベルの障害については自動復旧するような仕組みの実装も進めております。コストや工数などさまざまな制約がございますが、可能なものから対策を講じてまいります。


最後になりましたが、今回の障害についてご報告くださった皆様、まことにありがとうございます。皆様のご助力により、より早く復旧作業に着手することができました。心より御礼申し上げます。

また、今回の障害で影響を受けた皆様に、あらためてお詫び申し上げます。今後とも Feedeen をよろしくお願いいたします。



2016年8月13日土曜日

メンテナンス結果と進捗のご報告

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

本日(8/13)未明にメンテナンスを行いましたので、その作業内容と、あわぜて現在の改善作業の進捗などについてご報告させていただきます。


メンテナンスの作業内容


今回のメンテナンスでは以下の更新を行いました。

  • 各サーバーインスタンスの差し替え
  • SSL (TLS) 証明書の更新
  • ニコRSSでの不具合修正

もともと今回メンテナンスを行った最大の理由は、 Feedeen のサーバーをホストしている AWS (Amazon Web Services) より、 DB サーバーのメンテナンスの告知があったことです。これにより、近日中に一時的なサービス断が避けられなくなりましたので、他の更新とともにインスタンスの入れ替えを行った次第です。

証明書の更新については、更新期限が迫っていた証明書を更新するとともに、昨今の情勢に合わせて SHA-256 形式に全面的に移行しました。古い SHA-1 形式の証明書は段階的に廃止されていきますが、 Feedeen では今後も安全な暗号化通信をご利用いただけます。

最後のニコRSS対応については、ニコRSSのフィードにおいて、同じアイテムが新規アイテムとして何度も取得されてしまうという現象を修正するものです。ただ、ニコRSS側でも同様の修正が行われたようで、既に現象は発生しなくなっていました。したがって詳細は割愛させていただきます。


改善作業の進捗について


Feedeen の機能改善については、ここ数ヶ月大きな進展がなく、申し訳ございません。これまで長くても1〜2ヶ月程度の間隔で更新していたのがパタッとなくなったので、もしかしたらサボっていると思われているかもしれませんが、決してそんなことはありません。現在はサービス開始時より引き継いでいる(今となっては少々非効率的な)古いデータ構造やプログラムを刷新する作業をひたすら続けております。

現在の Feedeen は、部分的に改善を進めてきたとはいえ、根本的には3年前の Google Reader の終了間際に突貫工事で組み上げたものです。そのため、今となっては非効率な箇所も多く、機能改善のためのデータの追加なども柔軟に行えない構造となってしまっています。そこで、今回集中的に古いデータ構造やプログラムを書き換えて、今後の改善を行う耐性を整えようという計画です。

ひとまず購読リストまわりの変更が終了したらリリースしようと考えているのですが、まだ50%程度の進捗で、あと2ヶ月程度かかる見通しです。根本的なデータ構造を変更するために影響範囲が広く、作業に長い時間がかかっておりますが、ご理解いただければ幸いです。

ということで、目に見える成果が出せないのが歯がゆいところですが、裏では懸命に改善を続けております。今後とも Feedeen をよろしくお願いいたします。



2016年8月7日日曜日

8月13日(土)午前 1:00〜3:00 メンテナンスのためサービスを停止します

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

8月13日(土曜日)午前 1:00〜3:00 の時間帯に、下記の通り Feedeen のメンテナンスを実施させていただきます。メンテナンス期間中は Feedeen がご利用いただけませんので、あらかじめご了承ください。

メンテナンス内容:

  • データベースインスタンスの交換
  • SSL証明書の更新
  • 細かいバグ等の修正

メンテナンス期間中はご不便をおかけいたしますが、ご理解の程、よろしくお願い申し上げます。