big*_*ato 5 memory-leaks node.js graphql apollo-server
我有一个带有多个端点的 graphql 服务器。它基本上只是一个 CRUD 应用程序,所以老实说我不确定为什么会出现内存泄漏。我唯一可能会泄漏的端点是将图片上传到 S3 的端点。
我一直在环顾四周,并尝试拍摄堆快照并进行比较,但我什至不确定哪个端点是罪魁祸首。这是我一直在关注的流程:
--inspect标志启动服务器:nodemon --inspect --exec babel-node src/index.js这是查找内存泄漏的正确流程吗?有没有更好的方法来做到这一点而不必猜测它来自哪个端点?是否有我可以在线使用的工具可以帮助我找到生产中内存泄漏的来源,而不必像这样猜测?也许像Datadog之类的东西?
更新:从 Heroku 的指标来看,每次发出请求时内存使用量似乎都会增加?
但是我的 src/index.js 文件没有做任何特别的事情:
import { ApolloServer, gql } from "apollo-server";
import { connectDb, models } from "./models";
import schema from "./schema";
import resolvers from "./resolvers";
import contexts from "./contexts";
const server = new ApolloServer({
typeDefs: schema,
resolvers,
context: async ({ req, connection }) => {
console.log(req.body.query);
console.log(req.body.variables);
const { getCurrentUser } = contexts;
const currentUser = await getCurrentUser(req);
return { models, currentUser };
},
});
connectDb().then(async () => {
server.listen({ port: process.env.PORT || 4000 }).then(({ url }) => {
console.log(` Server ready at ${url}`);
});
});
Run Code Online (Sandbox Code Playgroud)