View a markdown version of this page

佈建輸送量例外狀況錯誤 - Amazon Kinesis Data Streams

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

佈建輸送量例外狀況錯誤

當 Kinesis 串流的請求速率超過一或多個碎片的輸送量限制時,會發生佈建輸送量超過例外狀況錯誤 (HTTP 400)。每個碎片都有特定的讀取和寫入容量限制,超過這些限制會觸發此例外狀況。導致此例外狀況的情況包括:資料擷取或耗用突然峰值、處理的資料磁碟區碎片容量不足,或分割區索引鍵分佈不均。

處理例外狀況的建議
  • 實作指數退避和重試機制。

  • 增加碎片數量以適應更高的輸送量。

  • 確保分割區索引鍵有適當的分佈。

  • 監控串流指標。

此外,使用 Kinesis 隨需容量模式有助於自動調整工作負載,並將此例外狀況的發生降至最低。如需詳細資訊,請參閱什麼是 AWS Fault Injection Service?

注意

不當的分佈問題不在自動擴展的隨需模式功能範圍內。

執行基本實驗
  1. 使用基準指標:在測試之前記錄正常輸送量模式。

  2. 建立實驗:使用 aws:kinesis:inject-api-provisioned-throughput-exception動作。

  3. 設定強度:從 25% 請求限流開始。

  4. 監控回應:使用指數退避驗證重試邏輯。

  5. 驗證擴展:確認自動擴展會觸發啟用。

  6. 檢查警示:確保CloudWatch警示如預期般執行。

應用程式應實作適當的退避策略、監控 WriteProvisionedThroughputExceededReadProvisionedThroughputExceeded指標,並適時觸發碎片擴展。

動作詳細資訊
  • 資源類型:IAM 角色 ARN

  • 目標操作PutRecordPutRecordsGetRecords

  • 錯誤代碼ProvisionedThroughputExceededException(HTTP 400)

  • 描述:模擬請求率超過碎片容量限制、測試應用程式限流和擴展回應的情況。

Parameters
  • IAM 角色 ARN:您的應用程式用於 Kinesis Data Streams 操作的角色。

  • 操作:目標操作:PutRecordPutRecordsGetRecords

  • 資源清單:特定的串流名稱或碎片識別符。

  • 持續時間:實驗持續時間,也就是從一分鐘到 12 小時的持續時間。在 AWS FIS API 中,值是 ISO 8601 格式的字串。例如,PT1M 代表一分鐘。在 AWS FIS 主控台中,您可以輸入秒數、分鐘數或小時數。

  • 強度:要調節的請求百分比。

所需的許可
  • kinesis:InjectApiError

範例實驗範本

下列範例顯示最多 5 個 Kinesis Data 串流具有指定標籤的所有請求的佈建輸送量例外狀況。 會隨機 AWS FIS 選取要影響的串流。5 分鐘後會移除故障。

{ "description": "Kinesis stream experiment", "targets": { "KinesisStreams-Target-1": { "resourceType": "aws:kinesis:stream", "resourceTags": { "tag-key": "tag-value" }, "selectionMode": "COUNT(5)" } }, "actions": { "kinesis": { "actionId": "aws:kinesis:stream-provisioned-throughput-exception", "description": "my-stream", "parameters": { "duration": "PT5M", "percentage": "100", "service": "kinesis" }, "targets": { "KinesisStreams": "KinesisStreams-Target-1" } } }, "stopConditions": [ { "source": "none" } ], "roleArn": "arn:aws:iam::111122223333:role/role-name", "tags": {}, "experimentOptions": { "accountTargeting": "single-account", "emptyTargetResolutionMode": "fail" } }

實驗角色許可範例

下列許可可讓您對影響 50% 請求的特定串流執行 aws:kinesis:stream-provisioned-throughput-exceptionaws:kinesis:stream-expired-iterator-exception動作。