2015-07-01 3 views
2

Я использую chokidar для просмотра файлов, и я получаю ошибки EMFILE, и я знаю, что это произошло, потому что в настоящее время у меня слишком много файловых дескрипторов.Node.js get open file descriptor count (development)

Я использую socket, поэтому изящный fs не устраняет проблему. Кроме того, установка моего ulimit временно, ну, временно.

Есть ли способ получить количество файловых дескрипторов, открытых в настоящее время в коде? Я хочу проверить, собирается ли число превысить лимит, и заставить процесс ждать, пока он не продолжит просмотр файлов/каталогов.

ответ

4

Простой способ получить текущий открытый Fd счет (предполагается, что у вас есть /proc фс), чтобы проверить количество записей в /proc/self/fd:

var readdir = require('fs').readdir; 

readdir('/proc/self/fd', function(err, list) { 
    if (err) throw err; 
    console.log(list.length); 
}); 

Имейте в виду, открыв каталог для чтения будут понесены другой открытый fd.

Если вы хотите проверить количество открытых файловых дескрипторов из внешнего процесса, просто замените self на pid, который вы хотите проверить.