javascript - 可能的node.js内存过度使用w/express服务器和pm2

标签 javascript node.js memory express memory-leaks

我正在开发一组为应用程序/平台协同工作的服务的一部分。我需要帮助的领域是一个普通的 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.htmlapp.jsapp.css 缓冲到内存中。

谁能帮我诊断一下吗?我正在寻找内存泄漏吗?我是否应该考虑这里的内存泄漏?我没有看到任何常见的迹象(随着时间的推移,在没有交互的情况下积累内存,等等)。我想在某种程度上我在这里依赖 pm2,但它是一个相当知名的模块,在生产中为不同的人提供了大量的操作,所以我还不太怀疑。

以下是集群响应非常基本的 GET 请求的示例: asciicast

最佳答案

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

关于javascript - 可能的node.js内存过度使用w/express服务器和pm2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30610400/

相关文章:

javascript - HERE map 瓦片api与Leaflet,如何获取并显示正确的版权信息?

node.js - 使用 sqlite3 进行 Sequelize 不会创建数据库

php - 防止 GD 图像库内存不足的故障安全方法? (PHP)

c++ - 为什么我不能使用指向派生类指针的基类类型分配内存?

java - 如何将 url id 映射到服务器上的内容?

javascript - RxJs-Observable-如何从 JSON 对象获取数据

javascript - Mongoose 如何对不同的集合使用相同的架构,但仍然能够单独更新这些集合

arrays - 如何处理大数据(约50000个对象)的Vue 2内存使用情况

javascript - 使用单选按钮数组的文本框可见性

javascript - Sequelize : Naming collision between attribute 'playlist' and association 'playlist' ?