2020/9/29 キャッシュサーバー高負荷によるアクセス障害のご報告

2020/9/29 12:05ごろより、PAY.JP全体にアクセスしづらくなる障害が発生しておりました。

status.pay.jp

本件障害により、加盟店各位に多大なご迷惑をおかけしましたことを心よりお詫び申し上げます。

本件障害の原因、対策につきまして以下の通りご報告させていただきます。

概要

2020/9/29 12:05~14:28までの間、一部通信がエラーまたはタイムアウトとなる障害が発生しました。 対象となったサービスは以下の通りです。

  • API
  • 管理画面
  • PAY IDウェブサイト

タイムライン

  • 12:08 障害を検知し、調査開始
  • 12:23 障害第一報を発信
  • 13:10 キャッシュサーバーの障害であることを特定
  • 13:24 キャッシュサーバーの増強作業を開始
  • 13:32 ダッシュボード・PAY IDウェブサイトをメンテナンスモードに設定
  • 14:15 APIをメンテナンスモードに設定
  • 14:20 APIのメンテナンスモードを解除
  • 14:22 APIアクセスの正常化を確認
  • 14:27 ダッシュボード・PAY IDウェブサイトのメンテナンスモードを解除
  • 14:28 再発の傾向がみられなかったため、障害ステータスをMonitoringに更新
  • 23:52 障害ステータスをResolvedに更新

障害の原因

本件障害は、APIへの負荷によってシステム全体で共用されているキャッシュサーバー(redis)のパフォーマンスが低下したことで発生しました。

9月上旬に行われた改修の一部に、キャッシュサーバーのパフォーマンス劣化を引き起こしうる処理が混入しておりました。

当該処理はリリース後もPAY.JPの平常時のアクセス量の下では重大な劣化は引き起こしておりませんでしたが、9/29 12:00ごろより発生した大規模なAPIアクセスによりパフォーマンス劣化が顕在化し、本件障害が発生いたしました。

レートリミット機能との関連

先日導入されたレートリミット機能は本件障害中も正常に機能しておりましたが、リミットの上限値内でも劣化が顕在化している状態でした。

対策

本件障害への一次対応として、キャッシュサーバーのスペックアップを実施いたしました。スペックアップに際して数分程度の完全なアクセス遮断が発生するため、緊急対応として5分間メンテナンスモードとさせていただきました。告知なしでのメンテナンスとなってしまい、大変申し訳ありませんでした。

恒久対応として、本件障害の原因となった処理の改修、適用作業を行いました。並行して、同様の劣化を引き起こしうる処理をアプリケーション全域で調査・改修する作業を進めております。こちらの作業は明日中を目処に完了予定となっております。

また、パフォーマンス監視体制を拡充し、今回のようなパフォーマンス劣化の兆候を早期に検知できるような仕組みの整備を早急に進めてまいります。

この度は利用者の皆様に多大なご迷惑をおかけし、まことに申し訳ありませんでした。