我正在运行pdfinfo命令来获取有关大小为100KB的pdf的信息。相关代码是
const pdfInfo = execute(`pdfinfo '${input}' | grep Pages`)
.then(stdout => {
var pdfLength = 0;
pdfLength = stdout.match(/Pages:\s+(\d+)/)[1];
return pdfLength;
})
function execute(command) {
return new Promise(function (res, rej) {
exec(command, function (error, stdout, stderr) {
if (error || stderr) {
rej(error || stderr);
} else {
res(stdout);
}
});
});
}
处理少量文件后,内存使用量一直在增加
PM2 details of the process
Mem: 431 MB CPU: 0 %
如果我看到服务器上的可用内存,那就是
/home/core-server # free -m
total used free shared buffers cached
Mem: 2000 1341 659 20 21 173
-/+ buffers/cache: 1145 854
Swap: 0 0 0
内存可用,但仍然出现错误
2019-01-10T00:46:42.266Z Error: spawn ENOMEM
at ChildProcess.spawn (internal/child_process.js:358:11)
at spawn (child_process.js:533:9)
at Object.execFile (child_process.js:216:15)
at exec (child_process.js:147:18)
at /home/core-server/helper/ppt2svg.js:42:5
at new Promise (<anonymous>)
at execute (/home/core-server/helper/ppt2svg.js:41:10)
at pdf2svg (/home/core-server/helper/ppt2svg.js:53:18)
at ppt2svg (/home/core-server/helper/ppt2svg.js:93:12)
at uploadPresentation.single.err (/home/core-server/api/sessions/index.js:174:25)
请问有什么想法可以解释为什么会发生这种情况吗?
编辑:顺便说一句,服务器上的其他所有设备都工作正常,但是exec方法遇到了这个问题
答案 0 :(得分:1)
据我所知,node.js具有默认的内存限制。类似于32位上的1G和64位系统上的1.7G。但是,幸运的是,您可以通过在node.js命令行中发出--max_old_space_size=<size>
选项来增加它。值<size>
的Mb。