可能 node.js 内存过度使用 express 服务器和 pm2

possible node.js memory overuse w/ express server and pm2

我正在处理一组服务的一部分,这些服务协同工作 app/platform。我需要帮助的领域是我们用来提供客户端应用程序(具体来说是一个 React 应用程序)的 vanilla Express 服务器。我们的客户端应用程序与之交互和使用的其他节点进程上还有许多其他服务 运行。

目前,它是一个 真正 轻量级快速服务器,仅使用 res.sendfile() 将 html 文件发送到客户端。我们最终将过渡到在服务器上呈现的更加同构(流行语是耶)的方法。我们使用出色的 pm2 模块来监视和配置服务器上的节点进程,这就是我的主要问题所在。

这是整个服务器中最相关的部分:

app.use("/app", express.static(__dirname + '/public'));

app.get('*', function(req, res) {
    res.sendFile(path.join(__dirname + '/index.html'));
});

在到达堆栈中的这一点之前,我们使用了一些标准的中间件函数。我认为这些在这里不相关,但如果有人认为这可能是问题所在,我可以将它们包括在内。

我们使用通配符路由将一些路由责任转移到 react-router,这利用了 html5 history/location API。除了这个基本的 route/response 代码之外,服务器的配置很少。

这看起来非常轻量级,但是当我查看 pm2 monit 的结果(显示内存使用情况)时,我看起来每个集群每个请求都会增加 ~3mb。我不确定这是否是 rss 或堆的 safe/ignorable 增加,或者我是否应该担心。似乎它几乎将 index.htmlapp.jsapp.css 缓冲到内存中。

谁能帮我诊断一下?我在看内存泄漏吗?我什至应该在这里考虑内存泄漏吗?我没有看到任何常见的迹象(随着时间的推移积累记忆 w/o 交互等)。我想在某种程度上我在这里依赖 pm2,但它是一个相当知名的模块,在生产中为不同的人采取了很多行动,所以我还不太怀疑。

这是集群响应真正基本的 GET 请求的示例:

原来这是我的 newrelic monitor installed w/ npm 造成的。警惕第三方工具! :)