我正在使用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)
有关如何解决此问题的任何想法?我似乎无法找到错误?
答案 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