4
我試圖在我的節點作業中使用ChildProcess.exec在async.forEach循環內運行一個命令。這裏是代碼Node.js spawn EMFILE
async.forEach(docPaths, function(docPath, callback) {
var run = [];
// some command using docPath variable here..
run.push(command);
debugger;
exec(run.join(' '), function(error, stdout, stderr){
callback();
});
}, callback);
以下是錯誤
"stack":"Error: spawn EMFILE\
at errnoException (child_process.js:478:11)\
at ChildProcess.spawn (child_process.js:445:11)\
at child_process.js:343:9\
at Object.execFile (child_process.js:253:15)\
at child_process.js:220:18\
快速谷歌顯示我需要設置的ulimit值,以增加文件描述符的數量可以是開放的。有些東西一樣 「的ulimit -n 10000」。(從下面鏈接)
https://groups.google.com/forum/#!topic/nodejs/jeec5pAqhps
我在哪裏可以增加這個..?還是有其他解決方案來規避這個問題?
感謝您的幫助..非常感謝!
據我所知,文件描述符ulimit被設置爲純粹爲了追蹤經典C++應用程序中的FD泄漏。因此,將節點應用設置爲無限制應該是安全的,因爲無論如何它在異步世界中都沒有多大意義。 – alex
@alex,它不是**安全**將ulimit設置爲無限制,請參閱http://www.linuxhowtos.org/Tips%20and%20Tricks/ulimit.htm以查看後果。 – Sriharsha
我已嘗試每個限制和每個系列都要通過錯誤。兩者中的任何一個對我都很好。雖然每個系列不會同時處理,但它解決了我遇到的問題。非常感謝 – nodeuser