数日間、エラーの解決策を探しました
Error: EMFILE, too many open files
多くの人が同じ問題を抱えているようです。通常の答えは、ファイル記述子の数を増やすことです。だから、私はこれを試しました:
sysctl -w kern.maxfiles=20480
、
デフォルト値は10240です。これは、ディレクトリで処理しているファイルの数が10240未満であるため、少し奇妙です。ファイル記述子の数を増やした後も、同じエラーが発生します。 。
2番目の質問:
何度か検索したところ、「開いているファイルが多すぎる」問題の回避策が見つかりました。
var requestBatches = {};
function batchingReadFile(filename, callback) {
// First check to see if there is already a batch
if (requestBatches.hasOwnProperty(filename)) {
requestBatches[filename].push(callback);
return;
}
// Otherwise start a new one and make a real request
var batch = requestBatches[filename] = [callback];
FS.readFile(filename, onRealRead);
// Flush out the batch on complete
function onRealRead() {
delete requestBatches[filename];
for (var i = 0, l = batch.length; i < l; i++) {
batch[i].apply(null, arguments);
}
}
}
function printFile(file){
console.log(file);
}
dir = "/Users/xaver/Downloads/xaver/xxx/xxx/"
var files = fs.readdirSync(dir);
for (i in files){
filename = dir + files[i];
console.log(filename);
batchingReadFile(filename, printFile);
残念ながら、まだ同じエラーが発生します。このコードの何が問題になっていますか?
最後の質問(私はjavascriptとnodeが初めてです)で、毎日約5000人のユーザーに大量のリクエストを送信するWebアプリケーションを開発しています。私は、PythonやJavaなどの他の言語を使用したプログラミングに長年の経験があります。だから私はもともとこのアプリケーションをdjangoまたはplayフレームワークで開発することを考えていました。次に、ノードを発見しました。ノンブロッキングI / Oモデルのアイデアは本当に素晴らしく、魅力的で、何よりも非常に高速です。
しかし、nodeにはどのような問題が予想されますか?それは生産実績のあるWebサーバーですか?あなたの経験は何ですか?