javascript - node内存溢出问题
我想大声告诉你
我想大声告诉你 2017-05-16 13:29:53
[Linux讨论组]
<--- Last few GCs --->

117435494 ms: Mark-sweep 1244.2 (1352.1) -> 1226.4 (1306.1) MB, 2539.5 / 0.0 ms [allocation failure] [GC in old space requested].
117437812 ms: Mark-sweep 1226.4 (1306.1) -> 1225.0 (1288.1) MB, 2318.0 / 0.0 ms [last resort gc].
117440139 ms: Mark-sweep 1225.0 (1288.1) -> 1224.7 (1288.1) MB, 2326.8 / 0.0 ms [last resort gc].


<--- JS stacktrace --->

==== JS stack trace =========================================

Security context: 0xa0c120cfb39 <JS Object>
    1: set [/home/iclassroom/nodejs/cnwkw/node_modules/express-session/session/memory.js:~131] 
    [pc=0x3cd12a011ce7] (this=0x23d9dec61609 
    <a MemoryStore with map 0x9ff52e70789>,
    sessionId=0x2ae89ca06ba9 <String[32]: tjNgaUldqGDhIny-NrTy-k2Z14N07L1f>,
session=0x2ae89ca06be1 <a Session with map 0x9ff52ed4809>,callback=0x2ae89ca08c79 
    <JS Function onsave (SharedFunctionInfo 0x173be2d1b1)>)
    2: save [...

FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory
 1: node::Abort() [/root/.nvm/versions/node/v6.10.2/bin/node]
 2: 0x109b7ac [/root/.nvm/versions/node/v6.10.2/bin/node]
我想大声告诉你
我想大声告诉你

全部回复(2)
阿神

执行文件的时候,使用

node --inspect --expose-gc XXX.js

这里面两个两个 flag --inspact 是告诉它通过chrome devtool 进行调试,--expose-gc 是说你可以通过global.gc()方法主动收集内存。

执行之后就会有一个chrome://协议的链接,粘贴进chrome,就会出现最常见的chrome dev tool,在profile 里面,点击第二栏 Take Heap Snapshot,然后点击Take Snapshot,记录一次当前heap内存使用情况,此时就会出现当前的内存使用情况的快照,然后等一下,让node程序运行一段时间,再记录一次,然后点击左上角的Summary切换成Comparison模式,通过与第一次的对比,找到究竟是什么增加了,就能找到具体的问题。

其次,可以在可疑的代码段前后通过 node 全局变量 processmemoryUsage 方法,打印出 heap
究竟的使用量,通过对比代码前后使用量的差别,判断是否有 heap 的泄漏。

通过题主的报错信息,像是 express session 记录时的问题,在写 session 的地方多打断点,通过 process.memoryUsage()方法看看究竟是哪里出了问题,这个需要耐心和运气。

为情所困

express-session 直接使用内存本身就有泄露的问题 文档上已经说明了 配合mongo或者redis使用

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号