加入我们,从10月8日至10日在纽约市参加活动,了解关于 GraphQL 联邦和 API 平台工程的最新提示、趋势和新闻。参加 2024 年纽约市 GraphQL 大会
文档
免费开始

吞吐量指南

了解GCU性能并扩展你的图容量


预览. 如果想申请访问或有任何问题或反馈,不要犹豫联系我们

本指南涵盖

  • 图计算单元(GCUs)概述及其性能预期
  • 如何计算您的所需的GCU数量
  • 如何根据需要变化管理您的超级图的吞吐量能力

概述

云专属定价基于运行您的图的必要(GCUs)的数量。一个GCU是吞吐量容量的单位,考虑以下因素:

  • 处理传入的请求
  • 中创建查询计划
  • 安全地将流量路由到您的后端服务

GCUs在您选择的地区的AWS上运行。

性能预期

由于云专属处于预览阶段,这些性能预期可能会发生变化。

从单个,您可以期待以下基线性能:

  • 每秒25个请求(RPS)
  • 150个子图 RPS
  • 每秒最多0.5兆字节的响应数据

GCU性能取决于其他因素,如有效载荷大小。例如,返回大量有效载荷的请求可能将吞吐量降低到基线25 RPS以下。 相反,返回少量数据的请求可能能实现高于基线25 RPS的吞吐量。

Apollo建议在进入生产之前对Cloud Dedicated上的GraphQL工作负载进行负载测试

吞吐量因素

除了RPS之外,复杂度和响应大小会影响GCU的吞吐量。例如,以下场景会降低相对GCU吞吐量:

  • 查询五个以上子图的请求
  • 每个操作返回数百或数千个的请求

这样的请求会降低吞吐量,因为它们需要额外的计算资源来执行。如果您超级图接收到复杂的查询或返回大量响应,请将额外的GCU纳入您的GCU计算

注意

GCU包括用于处理偶尔的复杂查询的突发容量。长时间的复杂查询可能会耗尽这一容量

速率限制

GCUs不超过速率限制。然而,GCUs确实提供了一定数量的吞吐量。可以暂时在几秒钟内提高GCU的吞吐量。在此期间之后,客户端将收到429错误。Apollo建议向客户端添加重试逻辑以最小化丢失的请求。

GCU计算

如果您已经使用,您可以使用中的操作指标来计算所需的GCUs

  1. Studio,进入洞察页面,并将时间范围选择为上个月
GraphOS Studio Insights page with timeframe selection
  1. 向下滚动到请求速率图表。这个图表显示了每分钟的请求次数(RPM)。
  2. 为了计算每秒所需的请求次数(RPS),找到峰值RPM并将其除以60。
  3. 由于1GCU作为基准可以服务25 RPS,因此将峰值RPS除以25来计算所需的GCUs。
GraphOS Studio Insights Request Rate chart with highlighted peak
  • 在上述示例中,峰值是19,000 RPM
  • 19,000 / 60 = 317,因此该图具有的峰值317 RPS
  • 317 / 25 = 13,因此此工作负载需要至少13 GCUs来运行。

注意

如果您的supergraph处理复杂或大型请求,请考虑额外的GCUs。

负载测试

在Cloud Dedicated上投入生产之前,Apollo非常建议运行负载测试以模拟生产流量。例如,假设您运行了典型的日流量的10%的负载测试,在单个GCU上运行良好。这意味着您在典型的日需要至少10个GCUs来运行您的图。

Dedicated试用版可以免费帮助您进行负载测试。取得联系以开始试用。

管理容量

Cloud Dedicated支持关键任务的生产工作负载,并且您可以调整性能以满足您的GraphQL APIs的需求。Dedicated支持每个GraphOS变种最多10个GCUs。

Dedicated从每个变种的1个GCUs开始。您可以通过以下方式更改变种的GCUs:

注意

GCU更新约需1分钟来启用。

在Studio中编辑GCUs

您可以从工作室中的云路由器页面更改变体的GCUs。点击管理容量旁边的路由器容量

GraphOS Studio managed GCUs

然后,选择所需的GCUs数量并点击保存更改

通过API编辑GCUs

您可以使用以下GraphOS平台API更改变体的GCUs。

mutation Graph($graphId: ID!, $name: String!, $gcus: Int!) {
graph(id: $graphId) {
variant(name: $name) {
router {
setGcus(gcus: $gcus) {
... on RouterGcusSuccess {
order {
id
}
}
}
}
}
}
}

此变异需要设置以下

  • graphId:图的ID是图参考的第一部分
    • 您可以在GraphOS Studio中的设置 >此图下找到graphId
  • name:变体名称
    • 如果您未设置变体名称,默认为current
  • gcus:为变体分配的GCUs数量
上一页
快速入门
下一页
自定义域名
评价文章评价在GitHub上编辑编辑论坛Discord

©2024Apollo Graph Inc.,也称为Apollo GraphQL。

隐私政策

公司