कुछ दिनों के लिए मैंने एक त्रुटि के समाधान के लिए काम किया है
Error: EMFILE, too many open files
ऐसा लगता है कि कई लोगों को एक ही समस्या है। सामान्य उत्तर में फ़ाइल डिस्क्रिप्टर की संख्या बढ़ाना शामिल है। तो, मैंने यह कोशिश की है:
sysctl -w kern.maxfiles=20480
,
डिफ़ॉल्ट मान 10240 है। यह मेरी नजर में थोड़ा अजीब है, क्योंकि निर्देशिका में मैं जिस फाइल को संभाल रहा हूं, उसकी संख्या 10240 से कम है। यहां तक कि अजनबी होने के बाद भी, मुझे फाइल डिस्क्रिप्टर की संख्या बढ़ाने के बाद भी वही त्रुटि मिलती है। ।
दूसरा सवाल:
कई खोजों के बाद मुझे "बहुत अधिक खुली फ़ाइलों" समस्या के लिए चारों ओर एक काम मिला:
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);
दुर्भाग्य से मैं अभी भी उसी त्रुटि को दूर करता हूं। इस कोड के साथ क्या समस्या है?
एक अंतिम प्रश्न (मैं जावास्क्रिप्ट और नोड के लिए नया हूं), मैं लगभग 5000 दैनिक उपयोगकर्ताओं के लिए बहुत सारे अनुरोधों के साथ एक वेब एप्लिकेशन विकसित करने की प्रक्रिया में हूं। मुझे अजगर और जावा जैसी अन्य भाषाओं के साथ प्रोग्रामिंग में कई वर्षों का अनुभव है। इसलिए मूल रूप से मैंने इस एप्लिकेशन को django या प्ले फ्रेमवर्क के साथ विकसित करने के लिए सोचा। फिर मैंने नोड की खोज की और मुझे कहना चाहिए कि गैर-अवरोधक I / O मॉडल का विचार वास्तव में अच्छा है, आकर्षक, और सभी सबसे तेजी से!
लेकिन मुझे नोड के साथ किस तरह की समस्याओं की उम्मीद करनी चाहिए? क्या यह एक उत्पादन सिद्ध वेब सर्वर है? आपके अनुभव क्या हैं?