即使是少量查询,Apollo 服务器也非常慢

问题描述 投票:0回答:1

我知道 GraphQL 在处理大型数据集时会变慢,但我拥有的是大约 60 个项目的数组。例如。在一个简单的查询中,我获取

id
title
country
,Apollo 服务器平均需要超过 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,
  }),
});
express graphql apollo-server
1个回答
0
投票

我意识到这是一个迟到的答复,但我们最近面临着同样的情况。

我们最近从 Apollo 服务器 2.x 迁移到 4.x,我们对 Apollo 4 的速度有多慢感到惊讶。 如果一次查询成功,则需要 60 多秒。大多数查询只是在长时间等待后超时。

经过漫长而乏味的修补,我们终于确定问题与服务器上启用的内省有关。 这导致 Apollo 工作室在 Apollo 尝试满足请求时不断拉取模式。 在我们的例子中,Apollo 工作室试图每 5 秒刷新一次模式——至少可以说这是一种矫枉过正的行为。

© www.soinside.com 2019 - 2024. All rights reserved.