কিছু দিন ধরে আমি একটি ত্রুটির কার্যকারী সমাধান অনুসন্ধান করেছি
Error: EMFILE, too many open files
দেখে মনে হচ্ছে অনেকের একই সমস্যা রয়েছে। সাধারণ উত্তরে ফাইল বর্ণনাকারীর সংখ্যা বাড়ানো জড়িত। সুতরাং, আমি এটি চেষ্টা করেছি:
sysctl -w kern.maxfiles=20480
,
ডিফল্ট মানটি 10240 my এটি আমার দৃষ্টিতে কিছুটা অদ্ভুত, কারণ আমি ডিরেক্টরিতে যে ফাইলগুলি পরিচালনা করছি তার সংখ্যা 10240 এর নিচে ran ।
দ্বিতীয় প্রশ্ন:
বেশ কয়েকটি অনুসন্ধানের পরে আমি "অনেকগুলি মুক্ত ফাইল" সমস্যার জন্য একটি কাজ খুঁজে পেয়েছিলাম:
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 ব্যবহারকারীদের জন্য প্রচুর অনুরোধ সহ একটি ওয়েব অ্যাপ্লিকেশন বিকাশের প্রক্রিয়াধীন। পাইথন ও জাভা অন্যান্য ভাষার মতো প্রোগ্রামিংয়ে আমার অনেক বছরের অভিজ্ঞতা আছে। তাই মূলত আমি ভেবেছিলাম এই অ্যাপ্লিকেশনটি জ্যাঙ্গো বা প্লে ফ্রেমওয়ার্ক সহ বিকাশ করব। তারপরে আমি নোড আবিষ্কার করেছি এবং আমার অবশ্যই বলতে হবে যে I / O মডেলটি অ-ব্লক করার ধারণাটি সত্যিই দুর্দান্ত, প্রলোভনসঙ্কুল এবং বেশিরভাগ ক্ষেত্রে খুব দ্রুত!
তবে নোডের সাথে আমার কী ধরণের সমস্যা আশা করা উচিত? এটি কি প্রোডাকশন প্রমাণিত ওয়েব সার্ভার? আপনার অভিজ্ঞতা কি?