Поиск утечек файловых дескрипторов без рестарта сервиса

Практические лайфхаки для разработчиков, DevOps и админов: Docker, Linux, Bash, Python, Golang, Ansible, логи и безопасность — только рабочие решения. Даем готовые команды, конфиги и приёмы диагностики, которые экономят часы и дни. Если нужно быстро настроить, отладить и обезопасить инфраструктуру — вы по адресу.

linuxфайловые дескрипторы/proc

👁 В проде иногда начинается странное: сервис работает, но внезапно упирается в Too many open files. Перезапуск — костыль, а проблема остаётся. Чаще всего это утечка файловых дескрипторов. Найти её можно без остановки сервиса, если смотреть прямо в /proc.

📝 Быстрая проверка количества открытых дескрипторов

У каждого процесса есть директория /proc/PID/fd, где лежат все открытые дескрипторы. Если число постоянно растёт — у тебя утечка. Это особенно критично для сервисов с сокетами, файлами или прокси.

ls /proc/12345/fd | wc -l

📝 Определение типа утечки (сокеты, файлы, pipe)

Можно посмотреть, что именно накапливается: файлы, сокеты или что-то ещё.

ls -l /proc/12345/fd

📌 В выводе будет видно: socket:[12345], pipe:[...] или реальные файлы. Это сразу даёт понимание, где копать — сеть, файловая система или межпроцессное взаимодействие.

📝 Мониторинг роста дескрипторов в динамике

Чтобы увидеть проблему в реальном времени, можно наблюдать за ростом дескрипторов. Если значение стабильно растёт под нагрузкой — это классическая утечка, и её нужно ловить уже на уровне кода или библиотек.

watch -n 1 "ls /proc/12345/fd | wc -l"

❗️ Утечки дескрипторов — одна из самых неприятных прод-проблем: сервис вроде жив, но постепенно умирает. /proc позволяет поймать это за минуты, без рестартов и сложных инструментов.

tags: #linux #файлы #полезно

🧭 @recura_tech 🌐 VK 🌐 MAX

Скриншот с оформлением RECURA: терминальные команды для проверки /proc/PID/fd, вывод ls -l и пример watch -n 1 для мониторинга роста файловых дескрипторов.
Команды для быстрой проверки и мониторинга открытых файловых дескрипторов через /proc.

Читайте так же