适用于: 开发人员版
在生成大容量容器和内容操作之前,请使用本文规划 SharePoint Embedded 调用模式。 SharePoint Embedded 将吞吐量表示为每分钟资源 单位 (标准化请求成本模型) 而不是固定的每秒请求数速率; API 速率限制 部分介绍了如何将资源单位转换为预期的请求速率。
标记 * 为的限制可通过 Microsoft 支持部门或 SharePoint Embedded 载入联系人请求增加;在生产环境中处理限制之前,计划好默认限制并请求增加限制。
限制类别
SharePoint Embedded 限制影响:
- 容器类型计数*
- 容器计数*
- 每个容器类型和容器的存储
- 文件和文件夹
- 权限
- 文件大小
- 版本计数
- API 速率限制*
- 每个应用、容器和用户的请求数*
注意
这些限制可能会更改。 在投入生产之前验证当前限制。
大小限制
SharePoint Embedded 强制实施以下大小限制。
| 资源 | 限制 |
|---|---|
| 开发人员租户可创建的容器类型 | 25* |
| 应用可拥有的容器类型 | 1 |
| 每个使用租户的每个容器类型的存储 | 100 TB* |
| 每个容器的 Files and folders | 3000 万 |
| 每个容器的存储 | 25 TB |
| 每个容器具有累加权限的 Files and folders | 5,000 |
| 文件大小 | 250 GB |
| 每个文件的版本计数 | 500 (默认自动版本历史记录限制) |
| 每个文件夹或文件共享的用户数 | 5,000 |
| 每个容器的自定义列数 | 40 |
星号 (*) 表示可以请求增加的限制。
在租户创建的容器类型中,一种可以是用于开发和测试的免费 试用容器类型 ,其余的都是 标准 (计费) 容器类型。 新租户从较低的默认值开始,可根据请求提高。 有关试用与标准的详细信息,请参阅 创建和配置容器类型。
设计容器类型限制
一个应用可以拥有一个容器类型。
不要将每个客户、项目、工作区或用户建模为单独的容器类型。
在容器类型内对应用程序存储实例使用容器。
为应用级行为、访问关系和计费责任选择容器类型。
有关容器类型规划,请参阅 了解容器类型和容器。
针对容器限制进行设计
容器提供存储和安全边界。
规划每个使用租户可能创建的容器数。
考虑活动容器以及任何可能影响配额或存储的已删除容器生命周期。
使容器边界与访问、生命周期和管理要求保持一致。
针对权限限制进行设计
SharePoint Embedded 允许每个容器最多 5,000 个具有累加权限的文件和文件夹。
当容器级或文件夹级模型足够时,避免将每个文件或文件夹设计为具有唯一权限。
尽可能使用容器成员身份和角色。
有关权限概念,请参阅 规划身份验证和权限。
限制响应
当应用程序达到服务限制时,SharePoint Embedded 可以返回:
- HTTP
429 Too Many Requests. - HTTP
503 Server Too Busy.
两个响应都包括一个 Retry-After 标头。
标头会告知应用在重试或提出新请求之前要等待多长时间。
重要
受限制的请求将计入使用限制。 如果忽略 Retry-After,应用可能会导致更多限制。
重试指南
实现重试逻辑:
- 检测 HTTP
429和503. - 读取
Retry-After标题。 - 在重试之前等待指定的持续时间。
- 减少限制后的并发性。
- 避免立即重试循环。
- 避免等待期后的请求高峰。
使用有限重试并揭示操作遥测的持续性故障。 有关处理限制响应的常规指南,请参阅 Microsoft Graph 限制指南。
并发指南
减少发生限制时的并发请求数。
避免同时发送多个请求的突增模式。
处理大型容器或文件集时,随时间推移分配工作。
使用队列或后台辅助角色来平滑流量。
当接近限制时,将用户可见的操作优先于后台维护。
API 资源单位
不同的 API 具有不同的成本,具体取决于功能和复杂性。
成本被标准化并表示为资源单位。
API 速率限制也使用资源单位定义。
每个请求都根据其复杂性对资源单位进行成本:
| 每个请求的资源单位数 | 运营 |
|---|---|
| 1 | 单个项查询,例如获取项。 |
| 2 | 多项查询,如列出子项、创建、更新、删除和上传。 |
| 5 | 所有权限资源操作,包括 $expand=permissions. |
注意
资源单位成本可能会发生变化。
API 速率限制
SharePoint Embedded 强制实施这些 API 速率限制。
| 资源 | 限制 |
|---|---|
| 每个容器的请求数 | 3,000 个资源单位/分钟 |
| 每个租户每个应用的请求数 | 12,000 个资源单位/分钟* |
| 每个用户的请求数 | 600 个资源单位/分钟 |
星号 (*) 表示可以请求增加的限制。
应用程序限制以资源单位定义。
每分钟的实际请求数取决于你调用的 API 及其资源单位成本。
要估算请求速率,请平均每个请求约两个资源单位,并将应用程序资源单位限制除以 2。
容器创建速率限制
每个使用租户以及在租户的高峰时段,容器创建限制为每秒 5 个新容器。 超出此限制的请求是速率限制的。 在高峰时段之外,可以更快地创建容器。
权限操作成本
权限资源操作的资源单位成本较高。
在五个资源单位中列出了包含 $expand=permissions 的操作。
减少不必要的权限扩展。
仅当对安全模型安全时才缓存权限派生的决策。
成员身份或角色发生更改时刷新权限数据。
批处理注意事项
批处理可以减少客户端开销,但不会消除服务限制或计费影响。
估算资源单位消耗和事务成本时,对每个基础操作进行计数。
避免创建在短时间间隔内对一个容器、应用、租户或用户集中太多工作的批次。
根据平台返回的响应详细信息,对批处理操作执行限制响应。
性能注意事项
设计对象:
- 减少大量权限调用。
- 可预测的并发。
- 增量同步。
- 限制后回退。
- 分离前台和后台工作。
- 多租户应用的租户级别公平性。
- 监视请求速率、响应代码和延迟。
API交易的计费影响,请参见 选择计费模式。
操作监视
跟踪:
- HTTP
429和503响应速率。 - 重试次数和等待持续时间。
- 资源密集型操作。
- 按应用、租户、用户和容器划分的请求。
- 后台作业队列长度。
- 每个容器和租户的存储增长。
- 权限操作频率。
使用这些信号来调整并发性并确定需要设计更改的租户或工作流。
计划清单
- 在生产启动之前确认当前大小限制。
- 对容器进行建模,而不是创建许多容器类型。
- 估计每个容器和每个使用租户的存储空间。
- 估计文件和文件夹计数。
- 避免不必要的添加权限。
- 实现
Retry-After对 和503的429处理。 - 限制并发并避免峰值。
- 按操作类型估算资源单位使用情况。
- 减少大量权限的操作。
- 监视限制和延迟。
- 在 API 设计中包含计费影响。