Gehirn DNS エラーレスポンスレート上昇・パフォーマンス低下
Incident Report for Gehirn Web Services
Postmortem

平素より Gehirn Web Services をご利用くださりありがとうございます。

Gehirn DNS では 2020 年 5 月 11 日 18 時 26 分から同 18 時 42 分にかけ、 DNS 権威サーバーにおいてエラーレスポンスレートが上昇し、またクエリパフォーマンスが悪化する障害が発生しておりました。

本障害によりお客さまにご不便とご迷惑をおかけいたしましたことをお詫び申し上げます。

障害内容

本障害では、以下のような意図しないレスポンスが返却されておりました。

  • Zone Apex においては、実際には存在するドメイン名の SOA リソースレコード以外のリソースレコードが応答に含まれない(エラーコード: NOERROR)
  • Zone Apex 以外においては、実際には存在するドメイン名に対してエラーコード NXDOMAIN が応答される

また、エラーレスポンスに関する問題が発生していないゾーンにおいても、クエリパフォーマンスが悪化する場合がございました。

障害原因

本障害の原因は、当社のソフトウェアにおける不具合であると判明しております。

Gehirn DNS が提供するエイリアス機能を利用するお客さまゾーンのうち、一部の誤った設定がなされているドメイン名に対するクエリの処理において、当社のソフトウェアに不具合がありました。

この不具合は、エイリアスレコードに対するクエリを処理する機構において、誤った設定がなされたエイリアスレコードに対するクエリを受け取ると当該クエリの処理が停止し、また同一ドメイン名に対する後続のすべてのクエリは当該クエリの終了を待ち続け応答が停止するという、いわゆるデッドロックと呼ばれるものでした。

Gehirn DNS のクエリ処理は複数のワーカーに分散し並列に実行しているため、特定のクエリの処理で問題が発生した場合もほかのクエリの処理に対する影響は限定的ですが、今回の不具合は問題のあるクエリを処理するワーカーが長時間にわたり専有してしまうため、異常を検知し新たなワーカーが自動的に開始されるまでに処理能力が低下し、他の正常なドメイン名おけるクエリにおいてもパフォーマンスの低下を引き起こしました。

このことに加え、このパフォーマンスの低下により、今回不具合のあった当社ソフトウェアと連携する OSS の DNS 権威サーバーソフトウェアとの間の通信がタイムアウトする問題が引き起こされました。

通常このようなタイムアウトなどが発生した場合は SERVFAIL が応答されるべきですが、当該 DNS 権威サーバーソフトウェアでは NXDOMAIN または NOERROR (NODATA) を応答しておりましたため、今回の障害におけるエラーレスポンスの発生に繋がりました。

また、 NXDOMAIN や NOERROR (NODATA) は SOA リソースレコードで指定される期間(現時点では Gehirn DNS において一律 60 秒間)ネガティブキャッシュの対象となるため、この応答が DNS フルリゾルバーなどでキャッシュされ、一定時間は名前解決ができない状況が固定化されておりました。

2020 年 5 月 8 日障害との関連について

Gehirn DNS では、本障害の 3 日前にも本障害と 同様の障害が発生 しておりました。

この障害において特定し、修正した問題( OS リソースの枯渇)は、今回の障害を引き起こしたエイリアスレコードの処理の問題が原因となっていたことが今回の障害における調査で判明しております。

前回の障害では OS リソースの枯渇を当社ソフトウェアと DNS 権威サーバーソフトウェア間の通信に由来するものであると判断し、 OS リソースの枯渇が発生しないよう、対症療法的に一定条件を満たすリソースを自動的に開放する仕組みを実装することにより対応いたしました。

しかし、実態に OS リソースの枯渇を引き起こしていた問題は、前項においてご説明しました、当社ソフトウェアのパフォーマンス低下、及びこれにより引き起こされた DNS 権威サーバーソフトウェア間の通信タイムアウトという異常が引き起こした、自動回復のためのワーカー作成であることが今回の調査で判明しております。

前回の障害時に今回の障害の予兆として、見過ごすことなく適切な対応を取れていれば今回の障害を未然に防げた可能性がございました。

再発防止について

今回の障害、及び前回の障害の障害の原因となった誤った設定がなされたエイリアスレコードの処理の不具合は、 5 月 12 日午前 2 時過ぎに修正が完了しております。

また、前回の障害時より継続して、さらなる不具合がないことを確認するため、システムのログレベルや監視のレベルを引き上げ注視しております。

今回の障害では、前回の障害の対応において見過ごしてしまった不具合により発生しており、前回の障害時における対応に不足があったことを痛感しております。

今後、 Gehirn DNS に限らず Gehirn Web Services 全体において、万が一不具合や障害が発生した場合は、より念入りな調査と根本原因の究明に努め、より安定しお客さまに信頼いただけるサービスを提供できるよう励んでまいります。

最後に、今回の障害によりご不便とご迷惑をおかけいたしましたことを改めて深くお詫び申し上げます。

本件に関するお問い合わせ先

Gehirn Support Center お問い合わせフォーム よりお問い合わせください。

対応履歴

  • 5 月 11 日 18 時 26 分 障害発生
  • 5 月 11 日 18 時 39 分 自動監視システムが担当エンジニアを電話で呼び出し、一次対応を開始
  • 5 月 11 日 18 時 42 分 障害復旧
  • 5 月 12 日 1 時 49 分 不具合修正完了
  • 5 月 12 日 2 時 8 分 すべての権威サーバーにおいて修正の適用を完了
Posted May 14, 2020 - 23:09 JST

Resolved
本問題の原因であると推定される問題の対応が完了いたしました。社内におけるさらなる調査と検証が完了しましたら、本ページにご報告書を掲載いたします。本障害によりご不便とご迷惑をおかけし申し訳ございませんでした。
Posted May 12, 2020 - 02:19 JST
Monitoring
平素より Gehirn DNS をご利用くださりありがとうございます。

2020 年 5 月 11 日 18 時 26 分から同 18 時 42 分にかけ、 Gehirn DNS においてエラーレスポンスレートの上昇を確認しました。

現在、エンジニアが対応を行っています。
Posted May 11, 2020 - 19:56 JST
This incident affected: Gehirn DNS (Authoritative Servers).