n1ro°
RU

Ошибки · Решение

Node.js EMFILE: что означает ошибка и как исправить

Процесс исчерпал доступное число файловых дескрипторов.

Редакция N1RO · Проверено

Короткий ответ

Node.js EMFILE — системная ошибка «Too many open files». Для диагностики важнее всего поля error.syscall, error.path/address и контекст операции.

Что означает ошибка

Процесс исчерпал доступное число файловых дескрипторов.

Возможные причины

  • Много файлов/сокетов открываются параллельно.
  • Дескрипторы не закрываются после ошибок.
  • Лимит open files слишком мал для нормальной нагрузки.

Что проверить

  • Проверьте количество fd в /proc/<pid>/fd.
  • Сопоставьте рост fd с конкретным кодом/нагрузкой.
  • Проверьте ulimit/systemd LimitNOFILE для процесса.

Безопасные шаги

  1. Закрывайте streams/sockets во всех ветках ошибок.
  2. Ограничьте параллелизм открытия файлов.
  3. Поднимайте fd limit только после исключения утечки.

Только безопасные обратимые действия. Опасные шаги — только по официальной инструкции и с пониманием рисков.

Когда нужен сервис

  • Если Node.js EMFILE остаётся после проверки syscall и ресурса, приложите stack trace, error.syscall и связанные path/address/port владельцу сервиса или инфраструктуры.

Похожие ошибки

  • /errors/nodejs-eexist/
  • /errors/nodejs-eisdir/
  • /errors/nodejs-enotdir/

Что учитывать

Точная причина зависит от версии ПО/прошивки, полного текста ошибки и контекста. Официальная инструкция имеет приоритет.

Официальный источник

Расшифровка сверена с официальными страницами поддержки из источников ниже. Редакция N1RO не диагностировала ваш конкретный случай.