2020 年 5 月 8 日 9 時 24 分から同 13 時 17 分にかけ、 Gehirn DNS においてエラーレスポンスレートの上昇、及びクエリパフォーマンスの低下が発生しておりました。
エラーレスポンスでは、通常 NOERROR が返されるべきクエリに対し、 NXDOMAIN または REFUSED が応答されておりました。
この障害によりご不便とご迷惑をおかけいたしましたことをお詫び申し上げます。
本障害では、DNS キャッシュ・ロードバランサーがクエリをリバースプロキシする DNS バックエンドサーバー郡の一部においてサーバーリソースの枯渇が発生したため、クエリパフォーマンスが低下したり、間欠的に NXDOMAIN エラーや REFUSED エラーを応答していたことが原因となっておりました。
また、 DNS キャッシュ・ロードバランサーでは DNS バックエンドサーバーの応答をエラーレスポンスも含め一定時間( 1 分未満)キャッシュしており、 DNS バックエンドサーバーがエラーレスポンスを応答した場合は、キャッシュが有効である期間、キャッシュ・ロードバランサーからは常にエラーレスポンスが応答されておりました。
さらに、 DNS キャッシュ・ロードバランサーは ANYCAST により世界 150 都市以上の POP にて DNS クエリを処理しており、各 POP ごとにパフォーマンスがよりよい DNS バックエンドサーバー(通常はネットワーク的に近傍なキャッシュサーバー)に DNS クエリをリバースプロキシするようになっております。
しかし、今回の障害では一部の DNS バックエンドサーバーにてパフォーマンスの低下が発生したため、問題のあった DNS バックエンドサーバーに近傍の POP では、通常は選択されることのないネットワーク的に遠方の DNS バックエンドサーバーが選択されることになり、正常なクエリレスポンスにおいてもパフォーマンスの低下が生じました。
なお、先述のように DNS キャッシュ・ロードバランサーには多くの POP が存在し、 DNS クエリが送信された環境の地理や ISP により利用される POP が異なるため、 DNS クエリが送信された環境により本障害の影響度合いが大きく異なっております。
今回の障害の原因となったリソースの枯渇は、ソフトウェアの不具合が原因であると特定しております。
Gehirn DNS では、オープンソースにて開発されている DNS 権威サーバーと、当社が開発したソフトウェアが通信することにより DNS クエリに応答しております。
この仕組みによる DNS クエリの処理において、 DNS クエリの応答に必要な通信が終了した時点で開放されるべき OS リソースが開放されておりませんでした。このため、新たな当該 OS リソースの確保を試みた際に OS の制限により割当を受けられず、エラー応答がなされておりました。
当該不具合はすでに修正し、また監視のレベルを上げ、正しく修正できていることを確かめております。
また、今回の障害では障害の発生からエンジニアへの通知までに長時間を要しております。
今後、万が一同様の問題が発生した場合は直ちにエンジニアに通知されるよう、監視システムの閾値を調整いたしました。
今回の障害により、お客さまにご不便とご迷惑をおかけいたしましたことを改めてお詫び申し上げます。