gpt4 book ai didi

node.js - 在本地服务器上复制heroku/node.js内存泄漏以进行调试

转载 作者:太空宇宙 更新时间:2023-11-03 22:36:17 26 4
gpt4 key购买 nike

如何在本地复制 Heroku 上的内存问题以进行调试?或者 Heroku 上更好的内存使用情况?

我在 Heroku 上有一个 Node.js 应用程序。一个服务器端实用程序可以执行一系列操作致力于生成可供用户项目下载的文件。对于一个特别大的案例,经过几次练习后,Heroku 会产生以下警告:

Process running mem=529M(103.4%)
2015-01-24T02:23:18.240108+00:00 heroku[web.1]: Error R14 (Memory quota exceeded)
2015-01-24T02:23:18.240108+00:00 heroku[web.1]: Process running mem=529M(103.4%)
...

每次额外的练习后,内存使用都会增加,所以在我看来肯定是泄漏:

2015-01-24T02:31:22.321689+00:00 heroku[web.1]: Process running mem=747M(145.9%)
2015-01-24T02:31:22.321689+00:00 heroku[web.1]: Error R14 (Memory quota exceeded)
2015-01-24T02:31:44.523511+00:00 heroku[web.1]: Process running mem=747M(145.9%)
2015-01-24T02:31:44.523800+00:00 heroku[web.1]: Error R14 (Memory quota exceeded)
2015-01-24T02:32:06.296071+00:00 heroku[web.1]: Process running mem=747M(145.9%)
2015-01-24T02:32:06.296314+00:00 heroku[web.1]: Error R14 (Memory quota exceeded)

但我无法在本地复制此内容。

按照 https://github.com/felixge/node-memory-leak-tutorial 运行分析工具 v8-profilernode-inspector ,每次练习时堆使用量都会短暂飙升至 156MB,但很快就会回到 1MB 以下。我可以无休止地调用该实用程序并获得相同的结果,而不会出现内存错误。

至少,限制内存使用的正确选项是什么?文档说这个选项是以字节为单位指定的,但是应用程序使用以下内容可以正常工作,因此我怀疑该选项被忽略:

node --debug --max-stack-size=512 app

最佳答案

虽然 node --help 在第一个屏幕上建议 --max-stack-size=[bytes],但限制内存使用的参数是 - -max-old-space-size=[Mbytes]

 node --max-old-space-size=512 app.js

这足以在本地重新创建内存不足错误。

关于node.js - 在本地服务器上复制heroku/node.js内存泄漏以进行调试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28128709/

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