问题
·EC2 m5.large 的 Nodejs 服务器运行中,进行压力测试时,超过 1100 线程连接时,会报出下面的错误。
FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory
1: 0x8dbaa0 node::Abort() [/opt/elasticbeanstalk/node-install/node-v10.14.1-linux-x64/bin/node]
原因
Node.js的 v8 解析仕样是内存使用到一定程度后才进行回收。
一些64位系统,Node使用的最大容量,缺省是2G未满(1.7G左右) 。
解决
调整使用最大容量
--max-old-space-size=<memory in MB>
package.json 中设置
"start": "babel-node --max-old-space-size=4096 src/server.js",