本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
佈建輸送量例外狀況錯誤
當 Kinesis 串流的請求速率超過一或多個碎片的輸送量限制時,會發生佈建輸送量超過例外狀況錯誤 (HTTP 400)。每個碎片都有特定的讀取和寫入容量限制,超過這些限制會觸發此例外狀況。導致此例外狀況的情況包括:資料擷取或耗用突然峰值、處理的資料磁碟區碎片容量不足,或分割區索引鍵分佈不均。
處理例外狀況的建議
-
實作指數退避和重試機制。
-
增加碎片數量以適應更高的輸送量。
-
確保分割區索引鍵有適當的分佈。
-
監控串流指標。
此外,使用 Kinesis 隨需容量模式有助於自動調整工作負載,並將此例外狀況的發生降至最低。如需詳細資訊,請參閱什麼是 AWS Fault Injection Service?
注意
不當的分佈問題不在自動擴展的隨需模式功能範圍內。
執行基本實驗
使用基準指標:在測試之前記錄正常輸送量模式。
建立實驗:使用
aws:kinesis:inject-api-provisioned-throughput-exception動作。設定強度:從 25% 請求限流開始。
監控回應:使用指數退避驗證重試邏輯。
驗證擴展:確認自動擴展會觸發啟用。
檢查警示:確保
CloudWatch警示如預期般執行。
應用程式應實作適當的退避策略、監控 WriteProvisionedThroughputExceeded和 ReadProvisionedThroughputExceeded指標,並適時觸發碎片擴展。
動作詳細資訊
-
資源類型:IAM 角色 ARN
-
目標操作:
PutRecord、PutRecords、GetRecords -
錯誤代碼:
ProvisionedThroughputExceededException(HTTP 400) -
描述:模擬請求率超過碎片容量限制、測試應用程式限流和擴展回應的情況。
Parameters
-
IAM 角色 ARN:您的應用程式用於 Kinesis Data Streams 操作的角色。
-
操作:目標操作:
PutRecord、PutRecords、GetRecords。 -
資源清單:特定的串流名稱或碎片識別符。
-
持續時間:實驗持續時間,也就是從一分鐘到 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-exception和 aws:kinesis:stream-expired-iterator-exception動作。