目次
カラーミーショップでは、ショップオーナーさまに安心してサービスをご利用いただくために、障害の原因と対策について継続的に発信しています。
今回は、2021年10月から12月のあいだに発生した障害と対策についてのレポートです。
前回は、データベースサーバへの負荷によって、ショップページ等の閲覧に影響が生じた対策として「パフォーマンス改善チーム」ができたことをお知らせしました。この章では、チームで取り組んだ内容・改善結果について報告します。
まず、サーバへのアクセス記録とパフォーマンス監視ツールを利用した計測・監視を行い、詳細な現状を把握しました。これは、ショップページの表示にかかる時間をどの処理が占めているのか、性能に一時的な異常が発生してはいないか、改善による効果がどの程度あったのかを測定する目的です。
計測の結果、ショップページの表示にかかる時間の大半は、データベースサーバから情報を取得する処理であることがわかりました。このような箇所は特に大量アクセスの影響を受けやすく、ショップページに大量のアクセスがあった場合はデータベースサーバへの負荷を高め、カラーミーショップ全体の閲覧に影響する可能性があります。
そこで、データベースサーバへアクセスする回数を削減し、効率的な情報取得のためにクエリ(SQL文)の改善を行うといった細かい改善を繰り返し行いました。
結果として、10〜12月にショップページが正常に稼働していた時間の割合※1は 99.91% に改善されました。7〜9月と比べて 0.6 %、時間に換算して約 240 分となります。さらに、ショップページの表示にかかる平均時間も500 ミリ秒から 300 ミリ秒へと改善されました※2。
引き続き、よりよい状態に改善していけるよう取り組んでいきます。
※1 この割合は稼働率ともいい、正常に動作していた時間と動作していなかった時間から算出します。
例:あるページが 1 日のうち 10 分間アクセスできなかった場合、100(%) – 100 * (10 分 / (24 時間 * 60 分))という式になり、1日の稼働率は約 99.3 % となります。
※2 この数値は全体における平均値であるため、ショップページのカスタマイズにより差が発生します。
カラーミーショップでは、ショップページの配信に複数台のサーバを配置しています。そして、ショップページへのアクセスを複数台のサーバに分散する役割をもつサーバも配置しています。
これは、ショップページへのアクセスを複数台のサーバに分散することで一台にかかる負荷を軽減し、複数のうちのどれかに異常が起きた場合でも、ショップページを配信し続けるための仕組みです。
ショップページへのアクセスを分散するサーバは、ショップページを配信するサーバが正常に稼働しているか定期的に確認を行います。もし異常があった場合は、自動的に異常のないサーバのみにショップページへのアクセスを分散するように切り替えます。
今回の障害は、この「ショップページを配信するサーバ」の状態の判定処理を改修したことによって発生しました。この改修でショップページを配信するすべてのサーバに異常があるという誤った判断がされたことで、ショップページへのアクセスの分散先がなくなり、ショップページを閲覧できない時間帯が発生しました。
この障害を受けて、2つの対策を行いました。
このような障害の可能性を事前に検知できるように、検証環境でも本番環境同様、ショップページを配信するサーバの状態確認を行うようにしました。
ショップページにアクセスできない時間を短くするために、障害が発生した際の巻き戻し作業にかかる時間を短縮する仕組みを導入しました。
本記事では2021年10月から12月のあいだに行った改善と、発生した1件の障害の原因と対策についてレポートしました。
今後もショップオーナーさま、購入者さまに、より安心してご利用いただけるサービスとなるよう、安定したサービス提供のための改善に取り組んでまいります。
登録時間はたった3分