Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Amazon Builder's Library 輪読会資料 ジッターを伴うタイムアウト、再試...

Amazon Builder's Library 輪読会資料 ジッターを伴うタイムアウト、再試行、およびバックオフ

参加しているコミュニティ、Challeng-Every-Monthの輪読会で作成した資料。

Avatar for メガネ男

メガネ男

April 13, 2020
Tweet

More Decks by メガネ男

Other Decks in Technology

Transcript

  1. 2 はじめに 障害の発生 • サーバー、ネットワーク 等、障害の発生要因は 様々。 • 故障しないシステムはない。 •

    障害を少しでも減らすために、タイムアウト、再試行、 バックオフを実装。
  2. 5 タイムアウト 3/4 • ただし、以下の場合機能しない欠陥がある。 ◦ ネットワークの遅延がある場合。 ◦ p99.9もp50も大差ないほど遅延の基準値が小さ い場合

    → 間隔の追加で回避可能 ◦ Linux のSO_RCVTIMEOはエンドツーエンドのソ ケットタイムアウトとしては不適切。
  3. 9 再試行とバックオフ 3/3 ◦ 適切なAPI設計をしないと再試行によりリソースを 消費してしまう。 ◦ べき等性* があれば安全 (EC2

    RunInstances API) *同一のパラメーターで 1 回以上リクエスト してもリソースの状態が同じであること) ◦ 再試行する意味のある障害で再試行する。
  4. 12 (参考) エクスポネンシャル バックオフ (重) None なにもなし Exponential エクスポネンシャル バックオフ

    sleep = min(cap, base * 2 ** attempt) Decorr 非相関ジッター     sleep = min(cap, random_between(base, sleep * 3) Full Jitter ジッター sleep = random_between(0, min(cap, base * 2 ** attempt) (軽) Equal Jitter 等ジッター    temp = min(cap, base * 2 ** attempt)               sleep = temp / 2 + random_between(0, temp / 2) 又は、クラウド・ネイティブのお作法( 2)「リトライ」 ~効率的なリトライ手法「 Exponential Backoff and jitter」とは何か
  5. 14 その他 参考情報 • 冪等と安全に関する誤解 • What is P99 latency?

    • ざっくり知る「結果整合性(Eventual Consistency)」