express - 即使是轻量查询,Apollo 服务器也很慢
问题描述
我知道 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,
}),
});
解决方案
推荐阅读
- c# - 如何在 C# winforms 中创建带有实线边框(3d)的按钮?
- python - HTTP 错误 404:启动 pdfbox 时未找到
- r - 在 R 中按分钟级的时间戳循环到子集数据帧
- algorithm - G和DFT的节点之间的深度优先遍历关系
- selenium - [Selenium]如何在网页元素上调用被覆盖的方法?
- sql - SQL 语法错误
- python - 使用 pyside 的 qtablewidget 中的单选按钮
- node.js - 如何更改节点中的默认调试器端口号?
- java - 无法使用带有 isOrdered 属性的 apache bindy 生成 csv
- firebase - 错误:- 引发了另一个异常:A RenderFlex 在底部溢出了 33 个像素