我正在开发一组为应用程序/平台协同工作的服务的一部分。我需要帮助的领域是一个普通的 Express 服务器,我们用它来提供我们的客户端应用程序(具体来说是一个 React 应用程序)。我们还有许多其他服务在其他 Node 进程上运行,我们的客户端应用程序与之交互并使用它们。
目前,它是一个真正的轻量级 Express 服务器,仅使用 res.sendfile()
将 html 文件发送到客户端。我们最终将过渡到在服务器上呈现的更加同构(流行语)的方法。我们使用出色的 pm2 模块来监视和配置服务器上的 Node 进程,这就是我的主要问题所在。
这是整个服务器中最相关的部分:
app.use("/app", express.static(__dirname + '/public'));
app.get('*', function(req, res) {
res.sendFile(path.join(__dirname + '/index.html'));
});
在到达堆栈中的这一点之前,我们使用了一些标准中间件函数。我认为这些与这里无关,但如果有人认为这可能是问题所在,我可以将它们包括在内。
我们使用通配符路由将部分路由责任转移到 react-router
,它利用了 html5 历史记录/位置 API。除了基本的路由/响应代码之外,服务器的配置非常少。
这看起来非常轻量级,但是当我查看 pm2 monit
的结果(显示内存使用情况)时,我看起来每个集群每个请求都增加了约 3mb。我不确定这是否是 rss 或堆的安全/可忽略的增加,或者我是否应该担心。看起来它几乎将 index.html
、app.js
和 app.css
缓冲到内存中。
谁能帮我诊断一下吗?我正在寻找内存泄漏吗?我是否应该考虑这里的内存泄漏?我没有看到任何常见的迹象(随着时间的推移,在没有交互的情况下积累内存,等等)。我想在某种程度上我在这里依赖 pm2,但它是一个相当知名的模块,在生产中为不同的人提供了大量的操作,所以我还不太怀疑。
最佳答案
原来这是由我的 newrelic monitor installed w/ npm 引起的。警惕第三方工具! :)
关于javascript - 可能的node.js内存过度使用w/express服务器和pm2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30610400/