SORU
22 Ocak 2012, Pazar


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
10 NİSAN 2013, ÇARŞAMBA


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.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Branboy3

    Branboy3

    12 AĞUSTOS 2012
  • PorterRobinsonVEVO

    PorterRobins

    11 Kasım 2013
  • JeezyVEVO

    JeezyVEVO

    12 Mayıs 2009