SharePoint Online の HTTP 調整 (応答コード 429) に関して

SharePoint Online は、データセンターの安定稼働のため、HTTP アクセスの一部をブロックして負荷調整する機能が備わっております。

SharePoint Online では、様々な利用者がファーム環境を共有しており、それぞれのお客様の利用状況に合わせて様々な HTTP 要求が送信されています。

サービス提供者の立場から、各利用者の利用状況や負荷状況の事前予測は不可能であり、個別に異なった運用対処もできません。このような予測しない高負荷が発生した際に、データセンターを守るための共通の基盤を用意する必要があります。

HTTP 調整は、上記背景のもとサービスの継続稼働のため、データセンター側の各種様々なパフォーマンス カウンタ値をもとに、HTTP アクセスに重みづけのルールを考慮して、高負荷と判断される際に優先度の低い HTTP 要求から受信直後・処理開始前にブロックし、負荷を自動調整 (縮退運転) するような設計で実装されています。

以下に例を記載します。データや指標などについては理解を促すための完全に恣意的なものです。

  • 優先度 A の HTTP 要求は 15:00 のみにブロックされています。
  • 優先度 B の HTTP 要求は 15:00 と 18:00 にブロックされています。
  • 優先度 C の HTTP 要求は 12:00, 15:00, 18:00 にブロックされています。

優先度により、それぞれ異なったしきい値があるため、このように異なった結果になる例となります。

 

HTTP アクセスの優先度付けについて

SharePoint Online への HTTP アクセスは重みづけされ、優先度が判断されます。

例えば、通常ブラウザー アクセス、JavaScript などの非同期アクセス、クロールなどの内部アクセス、カスタム アプリケーション (CSOM/REST) など、SharePoint Online には様々な要求が送信されます。これらは独自かつ非公開のアルゴリズムで優先度付けされます。公開情報の記載から、一般的な例を記載します。

  • ユーザー アクセス (ページ描画などの要求) の方が API よりも優先されます。
  • API 実行の場合、HTTP要求の UserAgent 指定によっても優先度が影響されます。
  • 調整は例外なくすべての HTTP 要求にかかります。(製品サービス内部の HTTP 要求も含む)

 

アプリケーション開発者の留意点

アプリケーション開発者は、下記の内容に留意してプログラムを開発していただきますよう何卒ご協力をお願いいたします。

 

1. リトライ処理を組み込む。

HTTP 調整によるブロックを完全に回避する方法はありません。

アプリケーション開発者はブロックされた際に、ユーザーへの混乱を引き起こさないようプログラムを実装する必要があります。

例えば、バッチ処理の場合はリトライなどを組み込み、ブロックを受けても処理がリトライされ、正常に完了するように実装する必要があります。

画面 UI に関する API 処理がブロックされた場合は、リトライは難しいと思われます。その場合は、ユーザーに手動再実行を促すなどにとどまり、予期せぬエラーや深刻なエラーが発生したなどのキャプションを出すことは避けてください。

 

2. ユーザー エージェントを修飾する。

ユーザー エージェントを修飾することで、調整機能は HTTP 要求の優先度を適切に判断することができます。このことにより、優先度の低い HTTP 要求のみにかけられた一部の調整項目を回避することができます。

なお、ユーザー エージェントを指定することで、データセンター側がアプリケーションの動作を監視・追跡しやすくなります。

 

3. データ センター側に不用意に負荷をかけるようなコードを書かない。

アプリケーションによる処理を少しでも早く終わらせるため、データセンターに対して極端な並列処理を実施することや、インターバルのないリトライ処理を行うことは推奨されません。

このような実装を行った場合、調整によりブロックされた状態から復旧するまでに、より多くの時間がかかる可能性があります。

なお、増分バックオフを実装しても調整を回避できない場合は、何度も処理をリトライするのは逆効果です。急ぎの場合は、まずは業務時間後や週末などのオフピーク時にスケジューリングの上実行いただくことで調整を回避できる場合があります。

 

マイクロソフト サポートで対応できること、できないこと

1. HTTP 調整の詳細なアルゴリズムの公開はできません。

Office 365 をとりまく環境には、様々なアプリケーションが存在します。悪意のあるアプリケーションも存在することから、具体的なアルゴリズムの公開は安定稼働やセキュリティに深刻な影響を与える可能性があります。

そのため、このような要求をサポート部門としてお受けし、回答することはできません。

また、実際の設定も様々な運用上の経緯などを経て、データセンターの安定稼働のため更新されていますので固定ではありません。

 

2. 調整の一部緩和や変更依頼は受け付けておりません。

繰り返しとなりますが、データセンターに予期せぬ高負荷が生じた場合 HTTP 調整はサービス ダウンを防ぐための最も重要な砦となります。

弊社サービスとしては、サービス全体としての安定稼働を最優先事項として掲げているため、いかなる理由があり仮に一部のユーザーのみが恩恵を受けたとしても、サービス全体に危険を及ぼすようなリクエスト (調整の緩和や処理変更) を受けることはできません。

3.  データセンターのパフォーマンス イシューによる調整が多発している場合

HTTP 調整は、サービス側の健全性に大きく依存します。サービス全体のパフォーマンスや健全性が低下してマルチ テナントに影響を与える状況に至っている場合、サポート部門としては調整に対して直接対処するのではなく、サービスのパフォーマンスや健全性の問題を解決するよう働きかけることで、HTTP 調整の多発を解決する方向性で対応することが可能です。

 

参考記事 

本投稿は、下記の記事をもとに作成しております。

タイトル : SharePoint Online で調整またはブロックを回避する方法
アドレス : /ja-jp/sharepoint/dev/general-development/how-to-avoid-getting-throttled-or-blocked-in-sharepoint-online

タイトル : Data migration and SPO service throttling
アドレス : https://blogs.technet.microsoft.com/sposupport/2017/08/12/data-migration-and-spo-service-throttling/

以上となります。

本情報の内容は、作成日時点でのものであり、予告なく変更される場合があります。