【问题标题】:Graphene-python performance issues for large data sets大型数据集的 Graphene-python 性能问题
【发布时间】:2021-01-05 22:11:44
【问题描述】:

目前正在使用带有 graphene-django(和 graphene-django-optimizer)的 graphene-python。

接收到 GraphQL 查询后,数据库查询在几分之一秒内成功完成;但是,石墨烯在另外 10 多秒内没有发送响应。如果我增加响应中发送的数据,响应时间会线性增加(数据的三倍 = 响应时间的三倍)。

正在检索的数据由嵌套对象组成,深度可达 7 层,但通过优化查询,这不会影响从数据库中检索数据所花费的时间,所以我假设延迟与graphene-python 将结果解析为 GraphQL 响应。

我不知道如何分析执行以确定什么需要这么长时间——在 Django 上运行 cProfiler 似乎并没有跟踪石墨烯的执行。

使用graphene-django-debugger中间件确定SQL Query响应时间,结果如下:

    "_debug": {
  "sql": [
    {
      "duration": 0.0016078948974609375,
      "isSlow": false,
      "rawSql": "SELECT SYSDATETIME()"
    },
    {
      "duration": 0.0014908313751220703,
      "isSlow": false,
      "rawSql": "SELECT [redacted]"
    },
    {
      "duration": 0.0014371871948242188,
      "isSlow": false,
      "rawSql": "SELECT [redacted]"
    },
    {
      "duration": 0.001291036605834961,
      "isSlow": false,
      "rawSql": "SELECT [redacted]"
    },
    {
      "duration": 0.0013201236724853516,
      "isSlow": false,
      "rawSql": "SELECT [redacted]"
    },
    {
      "duration": 0.0015559196472167969,
      "isSlow": false,
      "rawSql": "SELECT [redacted]"
    },
    {
      "duration": 0.0016672611236572266,
      "isSlow": false,
      "rawSql": "SELECT [redacted]"
    },
    {
      "duration": 0.0014820098876953125,
      "isSlow": false,
      "rawSql": "SELECT [redacted]"
    },
    {
      "duration": 0.0014810562133789062,
      "isSlow": false,
      "rawSql": "SELECT [redacted]"
    },
    {
      "duration": 0.001667022705078125,
      "isSlow": false,
      "rawSql": "SELECT [redacted]"
    },
    {
      "duration": 0.0014202594757080078,
      "isSlow": false,
      "rawSql": "SELECT [redacted]"
    },
    {
      "duration": 0.0027959346771240234,
      "isSlow": false,
      "rawSql": "SELECT [redacted]"
    },
    {
      "duration": 0.002704143524169922,
      "isSlow": false,
      "rawSql": "SELECT [redacted]"
    },
    {
      "duration": 0.0030939579010009766,
      "isSlow": false,
      "rawSql": "SELECT [redacted]"
    }
  ]
}

下面的屏幕截图显示了服务器对同一请求的相应响应时间:

如果有人知道为什么石墨烯需要这么长时间来创建响应,或者可以帮助我分析石墨烯的执行情况,我将不胜感激!

【问题讨论】:

    标签: django graphql graphene-python graphene-django


    【解决方案1】:

    分析开始执行 grahene 的方法。

    【讨论】:

      猜你喜欢
      • 2019-06-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-24
      • 2016-11-29
      • 1970-01-01
      • 1970-01-01
      • 2013-08-01
      相关资源
      最近更新 更多