21章過負荷への対応

執筆:Alejandro Forero Cuervo

編集:Sarah Chavis

ロードバランシングのポリシーの目標は過負荷を避けることです。しかし、ロードバランシングのポリシーがいかに効率的であったとしても、いつかはシステムのどこかが過負荷になるときがきます。過負荷の状況をうまく扱うことは、信頼性のあるサービスを稼働させるために欠かせないことです。

過負荷を扱う方法の一つは、レスポンスの品質を下げることです。すなわち、通常のレスポンスに比べて精度が低い、あるいは含まれるデータ量が少なく、計算しやすいレスポンスを返すのです。以下はその例です。

  • 検索クエリに対し、コーパス全体を検索して最善の結果を提供する代わりに、候補の集合の小さな部分だけを検索する。
  • 本来のストレージにアクセスせず、完全に最新ではない可能性がある計算結果のローカルコピーを使うことで負荷を抑える。

とはいえ、極端な過負荷状態の下では、品質を下げたレスポンスを計算して返すことさえできないかもしれません。そうなってしまった場合、おそらく即座にとれる選択肢はエラーを返すこと以外にないでしょう。この場合の緩和策の一つは、トラフィックのバランスをデータセンター間で調整し、処理できないほどのトラフィックを受けるデータセンターがないようにすることです。例えば、あるデータセンターが100個のバックエンドタスクを実行しており、それぞれのタスクが処理できるリクエスト数が最大で毎秒500であるなら、ロードバランシングのアルゴリズムはそのデータセンターに毎秒50,000以上のクエリは送信させません。しかし次節で述べるように、この制約でさえも、大規模な環境での運用において過負荷を避けるには不十分であることが分かります。最終的に一番良いのは、リソースの制限に応じてうまく動作できるようにクライアントやバックエンドを構築することなのです。それはすなわち、可能な場合にはリダイレクトを行い、品質を下げた結果を返し、他に方法がなければリソースエラーを透過的に扱えるようにすることです。 ...

Get SRE サイトリライアビリティエンジニアリング ―Googleの信頼性を支えるエンジニアリングチーム now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.