負荷制限とレート制限
SCAPI では、インスタンスの可用性を最大化するためにさまざまな手法を使用しています。
- 負荷制限: API は、システムが過負荷になるのを防ぐために、受信リクエストを意図的に拒否します。
- レート制限: API クライアントが特定の時間枠内にリクエストを行うことができる頻度は制御されます。
これらの保護メカニズムにより、顧客はストアフロントに中断なくアクセスできます。
最大容量にスケーリングした後にシステムが負荷のしきい値に達すると、HTTP 503 ステータスコードが返されます。負荷制限は、買い物客が進行中の注文手続きを完了できるようにするために、Shopper Baskets や Shopper Orders の API ファミリーなどの注文手続きに関連するエンドポイントでは使用されません。
負荷制限によって保護されるエンドポイントには、次の HTTP レスポンスヘッダーが含まれます。
sfdc_load
: 使用中のシステム容量 (パーセント): 0 から 100sfdc_load_status
: システムの相対的な健全性:- WARN: 80% のシステム容量で返されます
- THROTTLE: 90 % のシステム容量で返されます
システム容量が 80% または 90% に達すると、sfdc_load_status
ヘッダーが送信されます。
SLAS や Omnichannel Inventory (OCI) などの一部の API ファミリーでは、レート制限のみが使用されます。
サービス品質を確保し、プラットフォームの安定性を向上させるために、一部の B2C Commerce API にはレート制限があります。受信したリクエストの数がレート制限に達すると、API は HTTP 429 レスポンスを返します。
顧客のシナリオやユースケースに応じて、制限を調整できます。レート制限、ユースケース、およびこれらのレートに要求される可能性のある調整についての質問がある場合は、Customer Success Manager またはアカウント担当者にお問い合わせください。レート制限、ユースケース、およびこれらのレートに要求される可能性のある調整についての質問がある場合は、Customer Success Manager またはアカウント担当者にお問い合わせください。
このドキュメントに記載されていない他のすべてのエンドポイントでは、レート制限が解除されています。
以下の表は、各 API ファミリーのレート制限を表しています。制限列には、特定のエンドポイントに許可される最大リクエスト数が表示されます。
SLAS でサポートされるレート制限は次のとおりです。
- Production (本番) インスタンスでは、1 テナントにつき 24,000 RPM (Requests Per Minute: 1 分あたりのリクエスト数)。
- Production (本番) 以外のインスタンスでは、1 テナントにつき 500 RPM。
- getJwksUri と getWellknownOpenidConfiguration のエンドポイントでは 25 RPM。
レート制限に達すると、SLAS は HTTP レスポンスヘッダー Retry-After を含む HTTP 429 Too Many Requests (リクエストの数が多すぎます) で応答します。Retry-After ヘッダーの値には、リクエストを再試行するまでの待機時間 (秒単位) が設定されています。
クライアントコードはこのリスポンスを処理できる必要があります。次のリクエストが確実に成功するよう、再試行する前に必ず指定された時間待機してください。
OCI に定義されたレート制限は、ローリングレート制限であることに注意してください。つまり、定義された期間ごとに同時に実行できるリクエストの最大数が設定されています。これは、定義された期間に 1 つの組織から送信できるトラフィックの量を制限することで、OCI がサービス拒否攻撃を防ぐために役立ちます。制限は秒単位で測定され、一定の間隔でリセットされるため、常に前方向に「ローリング」します。割り当てられたクォータを長時間超過した組織は、使用量が再びしきい値を下回るまでブロックされます。このようなルールを設定することで、OCI は疑わしい活動を検知し、問題がサービスの全コンシューマーに広がる前にトラフィックをブロックできます。
以下に、サービス別、エンドポイント別、リクエストタイプ別にレート制限の概要を示します。
次の API は Omnichannel Inventory API ファミリーに含まれています。
基本 URI: https://{shortCode}.api.commercecloud.salesforce.com
+
/inventory/availability/v1/organizations/{organizationId}
+
エンドポイント | メソッド | リクエスト | 秒数 |
---|---|---|---|
/availability-records/actions/batch-update | POST | 100 | 10 |
/availability-records/actions/get-deltas | POST | 500 | 10 |
/availability-records/actions/get-availability | POST | 10,000 | 10 |
/locations/{locationId}/availability-records/skus/{sku}/{requestId} | DELETE | 12000 | 10 |
/locations/{locationId}/availability-records/skus/{sku}/{requestId} | PUT | 100 | 10 |
/locations/{locationId}/availability-records/skus/{sku}/{requestId} | PATCH | 100 | 10 |
/product-segmentation/actions/batch-update | POST | N/A | N/A |
基本 URI: https://{shortCode}.api.commercecloud.salesforce.com
+
/inventory/impex/v1/organizations/{organizationId}
+
エンドポイント | メソッド | リクエスト | 秒数 |
---|---|---|---|
/availability-records/exports | POST | 40 | 60 |
/availability-records/exports/{exportId} | DELETE | 40 | 60 |
/availability-records/exports/{exportId}/file-content | GET | 40 | 60 |
/availability-records/exports/{exportId}/status | GET | 20 | 10 |
/availability-records/imports | POST | 2 | 10 |
/availability-records/imports | GET | 2 | 10 |
/availability-records/imports/{importId} | DELETE | 2 | 10 |
/availability-records/imports/{importId}/status | GET | 20 | 10 |
/availability-records/imports/{importId}/file-content | GET | 2 | 10 |
/availability-records/imports/uploadlink/{uploadLinkId} | POST | 2 | 10 |
/event-log/exports | POST | 40 | 60 |
/event-log/exports/{exportId}/status | GET | 40 | 60 |
/event-log/exports/{exportId}/file-content | GET | 40 | 60 |
/location-graph/exports | POST | 2 | 60 |
/location-graph/exports/{exportId} | DELETE | 2 | 60 |
/location-graph/exports/{exportId}/status | GET | 20 | 10 |
/product-segmentation/imports | POST | 2 | 60 |
/product-segmentation/imports/{importId} | DELETE | 2 | 60 |
/product-segmentation/imports/{importId}/file-content | GET | 40 | 60 |
/product-segmentation/imports/{importId}/status | GET | 20 | 10 |
/product-segmentation/imports/uploadLink/{uploadLinkId} | POST | 2 | 60 |
/product-segmentation/exports | POST | 40 | 60 |
/product-segmentation/exports/{exportId} | DELETE | 40 | 60 |
/product-segmentation/exports/{exportId}/file-content | GET | 40 | 60 |
/product-segmentation/exports/{exportId}/status | GET | 20 | 10 |
/transfers/location-graph/exports/{exportId}/file-content | GET | 2 | 60 |
基本 URI: https://{shortCode}.api.commercecloud.salesforce.com
+
/inventory/reservation/v1/organizations/{organizationId}
+
エンドポイント | メソッド | リクエスト | 秒数 |
---|---|---|---|
/fulfillments | POST | 10,000 | 10 |
/releases | POST | 10,000 | 10 |
/reservation-documents/{reservationId} | PUT | 10,000 | 10 |
/reservation-documents/{reservationId} | PATCH | 10,000 | 10 |
/transfers | POST | 10,000 | 10 |