gpt4 book ai didi

node.js - 如何自动测试 Node 中的内存泄漏?

转载 作者:搜寻专家 更新时间:2023-11-01 00:38:10 25 4
gpt4 key购买 nike

我在一个库中有一些代码在过去曾严重泄漏,我想添加回归测试以避免将来出现这种情况。我了解如何通过查看内存使用情况配置文件或 Valgrind 手动查找内存泄漏,但我在为它们编写自动测试时遇到了麻烦。

我尝试使用 global.gc() 然后是 process.memoryUsage() 在运行我正在检查泄漏的操作之后,然后重复执行此操作以尝试建立操作次数与内存使用量之间存在线性关系,但内存使用量数字中似乎存在噪音,因此很难准确测量。

所以,我的问题是:是否有一种有效的方法可以在 Node 中编写一个测试,该测试在操作泄漏内存时始终通过,而在不泄漏内存时失败?

我应该提到的一个问题是内存泄漏发生在 C++ 插件中,并且一些泄漏的内存不是由 Node VM 管理的,所以我正在测量 process.memoryUsage().rss

最佳答案

自动化和记录信息以测试 Node js 中的内存泄漏。

  • 有一个很棒的模块叫做 memwatch-next。

    npm install --save memwatch-next

添加到 app.js:

const memwatch = require('memwatch-next');

// ...

memwatch.on('leak', (info) => {

// Some logging code...

console.error('Memory leak detected:\n', info);
});

这将使您能够自动测量是否存在内存泄漏。

  • 现在进行测试:

这方面的好工具是 Apache jMeter。更多信息 here .

如果您使用的是 http,则可以使用 jMeter 来浸泡测试应用程序的端点。

SOAK 测试用于验证系统在较长时间内的稳定性和性能特征,这在您查找内存泄漏、连接泄漏等时非常有用。

  • 持续集成软件:

如果您正在使用像 Jenkins 这样的持续集成软件,在部署到生产环境之前,您可以创建一个 Jenkins 作业来为您完成这项工作,它将使用测试后提供的参数测试应用程序将以太部署应用程序或报告存在内存泄漏。 (取决于您的 Jenkins 作业配置)

希望对您有所帮助,请告诉我进展情况;

祝你好运

关于node.js - 如何自动测试 Node 中的内存泄漏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44293127/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com