我已经阅读了几个关于V8内存限制的内容。唉,我还不清楚。也许它很清楚,但我不想相信。这是我的问题:
我有一个Node.js应用程序,它将托管在一个物理服务器中。这个应用程序基本上是一些视频相关CPU和RAM繁重工作的接口。例如,我使用FFMPEG在此应用程序中转码视频。在执行此操作时,我使用了child_process
个Node。特别是.spawn
。
我的问题是; 由于我在child_process中运行CPU和RAM密集型作业,我是否可以连接到V8内存限制(在正确设置的64位系统中它是1.7GB)?
因为我的FFMPEG进程几乎耗尽了生产中服务器的所有资源。根据服务器配置,它甚至可以使用32GB内存和数十个虚拟CPU内核。
我想我需要解释child_process
如何运作。
谢谢
答案 0 :(得分:-1)
子进程本身不会影响V8的内存使用。但是,如果你在内存中缓冲来自子进程的非常大的输出,那么该缓冲区将受到V8内存限制的限制。
缓冲的意思是:
exec('produce --a-gigabyte-of-stdout-output', function(err, stdout, stderr) {
});
或与child_process.spawn()做类似的事情:
var proc = spawn('produce', [ '--a-gigabyte-of-stdout-output' ]);
var buf = '';
proc.stdout.on('data', function(d) {
buf += d;
});
如果你现在正在做这样的事情,你可能想尝试将数据从子进程流式传输到其他地方,而不是在节点进程内缓冲。