节点JS处理内存不足

时间:2016-05-29 19:58:52

标签: javascript node.js process garbage-collection forever

我正在使用JS来连续运行我的节点JS服务器,但偶尔服务器崩溃并且网站停机一段时间。

我看了永远的日志,在这里显示:

FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - process out of memory

<--- Last few GCs --->

35251732 ms: Mark-sweep 687.6 (219898.0) -> 687.6 (527360.0) MB, 13522.0 / 0 ms [allocation failure] [scavenge might not succeed].
35267178 ms: Mark-sweep 687.6 (527360.0) -> 687.6 (940128.0) MB, 15445.8 / 0 ms [allocation failure] [scavenge might not succeed].
35282842 ms: Mark-sweep 687.6 (940128.0) -> 687.6 (1352896.0) MB, 15664.3 / 0 ms [last resort gc].
35298326 ms: Mark-sweep 687.6 (1352896.0) -> 687.6 (1765664.0) MB, 15483.8 / 0 ms [last resort gc].


<--- JS stacktrace --->

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

Security context: 0x82f80fa5a91 <JS Object>
    2: decode(aka utf8decode) [/home/ubuntu/chat2/node_modules/socket.io/node_modules/engine.io/node_modules/engine.io-parser/node_modules/utf8/utf8.js:~200] [pc=0x19db242bd813] (this=0x1ea709fcc4c9 <an Object with map 0xedc29877b11>,byteString=0x1bd8952f0461 <Very long string[8570662]>)
    3: decodePacket [/home/ubuntu/chat2/node_modules/socket.io/node_modules/engine.io/node_modules/engine.io-...

error: Forever detected script was killed by signal: SIGABRT
error: Script restart attempt #9
Server running at http://localhost:1337/

我在console.log文件中发现了一些导致节点崩溃的错误:

error: Forever detected script was killed by signal: SIGKILL
error: Script restart attempt #11


Error: read ECONNRESET
    at exports._errnoException (util.js:870:11)
    at TCP.onread (net.js:544:26)

RangeNotSatisfiableError: Range Not Satisfiable
    at SendStream.error (/home/ubuntu/chat2/node_modules/express/node_modules/connect/node_modules/serve-static/node_modules/send/index.js:245:31)
    at SendStream.send (/home/ubuntu/chat2/node_modules/express/node_modules/connect/node_modules/serve-static/node_modules/send/index.js:564:19)
    at onstat (/home/ubuntu/chat2/node_modules/express/node_modules/connect/node_modules/serve-static/node_modules/send/index.js:624:10)
    at FSReqWrap.oncomplete (fs.js:82:15)

有关如何解决此问题的任何想法?我似乎无法找到错误?

1 个答案:

答案 0 :(得分:2)

您可以尝试使用此方法增加节点js中的内存限制

  

node --max_old_space_size = 8192 --optimize_for_size   --max_executable_size = 4096 --stack_size = 4096

你可以像这样使用它:

  

node --max_old_space_size = 8192 --optimize_for_size   --max_executable_size = 4096 --stack_size = 4096 yourfile.js