我如何分配足够的内存运行Object.stringify没有内存/ RangeError

我使用节点实例发送非常大的JSON文件。

JSON文件大约是150MB。

当我在生产中运行它时,出现以下错误:

RangeError: Invalid string length at join (native) at Object.stringify (native) at stringify (/opt/biz/fishco/api/node_modules/json-stringify-safe/stringify.js:5:15) at safeStringify (/opt/biz/fishco/api/node_modules/request/lib/helpers.js:24:11) at Request.json (/opt/biz/fishco/api/node_modules/request/request.js:1222:17) at Request.init (/opt/biz/fishco/api/node_modules/request/request.js:407:10) at Request.RP$initInterceptor [as init] (/opt/biz/fishco/api/node_modules/request-promise-core/configure/request2.js:45:29) at new Request (/opt/biz/fishco/api/node_modules/request/request.js:128:8) at request (/opt/biz/fishco/api/node_modules/request/index.js:54:10) at MachineModel.sendModelToML (/opt/biz/fishco/api/dist/src/biz/models/machine.model.js:28:16) at MachineController.<anonymous> (/opt/biz/fishco/api/dist/src/biz/controllers/machine.controller.js:44:35) at next (native) at fulfilled (/opt/biz/fishco/api/dist/src/biz/controllers/machine.controller.js:4:58) at process._tickCallback (internal/process/next_tick.js:103:7) 

一些快速googeling说这可能是VM内存问题,并扩大HEAP大小。

我的服务器有32GB的RAM。 我的节点进程是dockerized。 Docker应该共享可用的内存。 我已经开始使用nodemon的节点进程我已经设置使用npm开始与folliwing:

 "scripts": { "start": "node --max_old_space_size=16384 --optimize_for_size --max_executable_size=16384 --stack_size=16384 dist/src/application", } 

这应该是充足的内存。

我还创build了一个本地testing工具,显示这个利用了大约1400MB的内存。

 import fs = require("fs"); let request = require("request-promise"); console.log(__dirname); let text = fs.readFileSync('/Users/jmurphy/projects/test_harness/target.json', 'utf8'); let json = JSON.parse(text); let backToText = JSON.stringify(text); let options: any = { uri: `http://localhost`, method: 'POST', json: json }; console.log(request(options)); 

这运行正常,我跟踪内存使用htop。

问:我如何确保有足够的内存可用于正确的string化?