测试 Graphql Api 性能

Posted

技术标签:

【中文标题】测试 Graphql Api 性能【英文标题】:Test Graphql Api performance 【发布时间】:2018-04-15 08:33:10 【问题描述】:

我正在重构使用 graphql 的 nodejs api 中的一些核心功能。 Api 用作代理,从多个来源获取请求并根据请求将它们传递给多个 api。 我想知道如何做一些整体性能测试,比较当前 api 版本的性能和重构后的性能,看看我是否至少没有降低性能?

【问题讨论】:

【参考方案1】:

您可以对您的 api 端点进行压力测试以比较结果。

使用 Loader.io 可能是您最好的方法。 https://loader.io/

注意多次输入文本并为每次测试清除缓存。

【讨论】:

【参考方案2】:

您是否研究过 Apollo 引擎,这是由 Apollo Client 的开发者提供的出色的 GraphQl 分析平台。易于安装且免费。本周发布。 https://dev-blog.apollodata.com/introducing-apollo-engine-insights-error-reporting-and-caching-for-graphql-6a55147f63fc

【讨论】:

你知道有没有类似阿波罗引擎的东西,但是对于Python?【参考方案3】:

你可以试试easygraphql-load-tester;它会为您创建所有查询,只需传递架构和参数!

Here 是使用 Artillery.io 的示例,here 是使用 K6 的另一个示例

通过这种负载测试,可以识别服务器上数据加载器的错误实现

没有数据加载器的结果

All virtual users finished
Summary report @ 10:07:55(-0500) 2018-11-23
  Scenarios launched:  5
  Scenarios completed: 5
  Requests completed:  295
  RPS sent: 36.88
  Request latency:
    min: 1.6
    max: 470.9
    median: 32.9
    p95: 233.2
    p99: 410.8
  Scenario counts:
    GraphQL Query load test: 5 (100%)
  Codes:
    200: 295

数据加载器的结果

All virtual users finished
Summary report @ 10:09:09(-0500) 2018-11-23
  Scenarios launched:  5
  Scenarios completed: 5
  Requests completed:  295
  RPS sent: 65.85
  Request latency:
    min: 1.5
    max: 71.9
    median: 3.3
    p95: 19.4
    p99: 36.2
  Scenario counts:
    GraphQL Query load test: 5 (100%)
  Codes:
    200: 295

【讨论】:

也许它的英文......写得不好的图书馆 写得不好是什么意思?文档是源代码吗?【参考方案4】:

我也尝试easygraphql-load-tester,但它真的没有帮助。我们使用Jmeter 检查 GraphQL API 的负载测试。它对我们真的很有帮助,您可以获得准确的响应、api 通过计数、api 失败计数,甚至您可以获取 excelsheet 格式的数据,并添加不同的变量,您可以创建 excel 文件并在其中导入。 甚至我们可以在其中生成图表来检查 api 性能。

【讨论】:

以上是关于测试 Graphql Api 性能的主要内容,如果未能解决你的问题,请参考以下文章

Graphql 是不是比 Rest API 提供任何性能提升?

用Node创建GraphQL API:代码量少,性能高

如何使用 API 平台对 GraphQL 文件上传进行单元测试?

如何测试 GraphQl API? [关闭]

如何使用 GRAPHQL 测试 e2e Nestjs API

harbor rest api 转graphql api