düğüm ve Hata: EMFILE, çok fazla açık dosya
Birkaç gündür bir hata için çalışan bir çözüm bulmaya çalıştım
Error: EMFILE, too many open files
Birçok kişi aynı sorunu yaşıyor gibi görünüyor. Her zamanki cevabı dosya tanımlayıcıları sayısını arttırmaktadır. Yani, bu denedim:
sysctl -w kern.maxfiles=20480
,
Varsayılan değer 10240. Bu dizin içinde hallediyorum dosya sayısı 10240 altında olduğu için gözüme biraz garip. Daha da garibi, hala dosya tanımlayıcıları sayısını arttırdım sonra aynı hatayı alırsınız.
İkinci soru:
Arama sayısından sonra geçici bir çözüm "çok fazla açık dosya" sorun: . birçok için buldum
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);
Ne yazık ki hala aynı hatayı alma. Bu kod ile yanlış nedir?
Son bir soru (javascript ve düğüm yeniyim), bir web geliştirme sürecinde ediyorum yaklaşık 5000 günlük kullanıcılar için istekleri bir sürü uygulama. Yılların tecrübesi ettim diğer diller ile programlama python ve java gibi. yani aslında django ile bu uygulama developp veya çerçeve oynamayı düşündüm. Sonra düğüm keşfettim ve engellenmeyen I/O modeli fikri gerçekten güzel, baştan çıkarıcı, ve en önemlisi çok hızlı olduğunu söylemek zorundayım!
Ama ne tür sorunlar düğüm ile ölçmeliyim? Üretim kanıtlanmış bir web sunucusu mu? Deneyimleri nelerdir?
CEVAP
Isaac Schlueter tarafından graceful-fs
modülü (node.js yazar) kullanarak muhtemelen en uygun çözüm. Eğer EMFILE karşılaşılırsa geri-off artımlı yok. Bir-damla-DAHİLİ olarak değiştirilmesi için fs
modül kullanılabilir.
Nasıl açık birden fazla dosya "Py...
Node.js olabilir't açık dosyaları...
browserify hata /usr/bin/env: düğüm: b...
com.android.ddmlib.SyncException: Çok ...
Çok fazla açık dosya: açık, nasıl, ne ...