首页 > 解决方案 > 即使是轻量查询,Apollo 服务器也很慢

问题描述

我知道 GraphQL 在处理大型数据集时会变慢,但我所拥有的是大约 60 个项目的数组。例如,在一个简单的查询中,我获取和idtitle并且countryApollo 服务器返回数据平均需要超过 3 毫秒,而解析器在不到 200 毫秒内重新运行调用 REST 端点的数据。我使用 Apollo studio 来调试查询,而我得到的结果对我一点帮助都没有——在任何地方都不到 1 毫秒。

在此处输入图像描述

如果我使用 2 个嵌套查询进行更复杂的查询,相同的 60 个项目需要 15-20 秒,并且嵌套查询非常轻。

我在谷歌上搜索,发现人们在处理数千个项目的非常繁重的查询时面临类似的问题,他们只谈了几秒钟,而不是 15-20 秒。

感觉我的设置有问题。我没有收到任何错误。我正在使用apollo-server-express基本设置:

const server = new ApolloServer({
  typeDefs,
  resolvers,
  introspection: true,
  playground: !(process.env.NODE_ENV === 'production'),
  engine: {
    reportSchema: true,
    graphVariant: 'current',
  },
  subscriptions: {
    onConnect: () => winston.info('Connected to websocket'),
    onDisconnect: webSocket => winston.info(`Disconnected from websocket ${webSocket}`),
  },
  context: ({ req }) => ({
    //eslint-disable-line
    req,
    pubSub,
  }),
});

标签: expressgraphqlapollo-server

解决方案


推荐阅读