В течение нескольких дней я искал рабочее решение для ошибки
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);
К сожалению, я все же получаю ту же ошибку. Что не так с этим кодом?
Последний вопрос (я новичок в javascript и node), я занимаюсь разработкой сети приложение с большим количеством запросов для около 5000 ежедневных пользователей. У меня многолетний опыт работы в программирование на других языках, таких как python и java. поэтому изначально я решил разработать это приложение с помощью django или play framework. Затем я обнаружил node, и я должен сказать, что идея неблокирующей модели ввода-вывода действительно хорошая, соблазнительная и, самое главное, очень быстро!
Но какие проблемы я должен ожидать от node? Является ли это проверенным продуктом веб-сервером? Каковы ваши впечатления?