Dynamic Media OpenAPI和资产网关:了解和解决API RateLimits

当请求模式超过动态速率限制时,高容量API活动可能会返回HTTP 429错误。 问题通常是由突发流量、重复轮询或多步骤工作流引起的,在这些工作流中,每个调用都单独计数,而缓存可能会在更新可见时延迟。 解决方案侧重于确认日志中的限制、减少不必要的请求、考虑缓存行为并应用指数回退。 稳定响应在调整请求模式和重试行为后返回。

描述 description

环境:

  • 基于API的资源摄取工作流
  • 元数据检索工作流
  • 资产交付或网关集成
  • 客户端发出重复或大量API请求

问题/症状

  • API端点返回间歇性的HTTP 429请求响应过多,这可以在应用程序日志或监控数据中确认并绑定回受影响的端点。
  • 在突发流量或其他大容量请求期间,此问题更加明显,这表明在请求负载较重的情况下会出现限制。
  • 多步骤工作流可能会受到不成比例的影响,因为单项操作可能会生成多个计数的API请求,例如搜索、元数据查找、上载启动和上载提交。
  • 反复的客户端活动(包括轮询、重试或无法重用缓存的响应)可能会增加请求量并助长限制。
  • 资产或内容更新可能会延迟,因为缓存的响应最多可保留10分钟;此行为可以通过响应标头(如Cache-Control: max-age=600)进行验证。
  • 在这些情况下,更新后的内容可能仅在1到10分钟后才会显示,这表示存在缓存层延迟,而不是单独的API故障。

根本原因:

API使用动态、基于负载的速率限制,而不是固定的每秒请求数阈值。 流量尖峰、未优化的轮询以及多步上传或查询流可能会使请求量超过正常限制并触发限制。 此外,响应可能使用Cache-Control: max-age=600进行缓存,因此下游缓存可以在源更新后继续为旧数据提供服务。

解决方法 resolution

请按照以下步骤减少限制并确认恢复。

  1. 查看应用程序日志或API监视以识别​ HTTP 429请求过多 ​响应。 预期结果是,明显证据表明受影响API端点存在流量限制。 验证响应是否可在同一工作流中重复,且不会局限于不相关的请求。
  2. 检查上载或查询工作流以了解多步骤请求模式。 预期的结果是确定每个呼叫分别占请求总量的流量。 验证是否正在计算请求序列(如搜索、元数据查找、上载启动和上载提交)。
  3. 查看重试行为和响应缓存,包括Cache-Control: max-age=600。 预期结果是发现可删除、延迟或缓存的重复调用。 验证客户端是否遵守了缓存持续时间,并且不会立即重新请求相同的数据。
  4. 尽可能缓存响应并避免重复元数据获取或重复调用,从而减少请求量。 预期结果是API吞吐量降低和限制请求减少。 通过查看日志或监控来验证更改,以确认请求量减少,429响应的发生频率降低。
  5. 检查更新时验证缓存行为。 预期结果是,刷新的内容可能会出现在正常缓存传播之后,而不是立即出现。 通过清除浏览器缓存,重试请求,并确认已刷新的内容在预期的1到10分钟缓存窗口内显示来验证此设置。
  6. 应用指数回退,以使客户端在429响应后重试之前等待的时间逐渐变长。 预期结果是降低限制事件的频率。 通过在部署重试更改后监视日志并确认重复的429响应拒绝来验证改进情况。
  7. 如果流量持续接近服务限制,请查看请求批量处理还是工作流设计更改是否能减少每个项目的调用。 期望结果是在正常流量下,响应行为更加稳定。 验证请求模式在典型使用期间保持稳定,且不再触发重复限制。
  8. 如果在请求优化后继续实施限制,请在联系支持部门之前收集时间戳、受影响的端点、请求和响应标头、预计请求率和缓存策略详细信息。 预期结果是形成完整的技术记录,支持更快的调查。 验证收集的信息是否反映了受限制的请求以及发生这些请求的条件。

如果在请求量减少后继续​ HTTP 429请求过多 ​响应,缓存按预期工作,重试行为已更新,并且相同API工作流的限制仍可重复,请将票证提交到Adobe支持,并包含故障排除期间收集的时间戳、受影响的端点、请求和响应标头、估计请求速率以及缓存策略详细信息。

相关阅读

recommendation-more-help
experience-cloud-kcs-help-kbarticles