Название: Слишком много открытых файлов: лимит Linux, который валит прод в 3 часа ночи Тип: Технический разбор Источник: Habr Сервис работает неделями без сбоев, а потом в три часа ночи падает с ошибкой too many open files. ulimit -n показывает 1 048 576, fs.file-max — бездонный, lsof | wc -l выдаёт всего 5 000. Почему сервис всё равно падает? Потому что лимитов три, и срабатывает не тот, на который вы смотрите первым. 💡 Главные тезисы: • Файловый дескриптор в Linux — это не только файл на диске: TCP-сокет, pipe, epoll-экземпляр, каталог и дескриптор устройства тоже считаются. • Типичный Go-сервис с 10 000 одновременных соединений, 1 000 исходящих подключений и телеметрией легко выходит на 12 000+ дескрипторов. • Три лимита: ulimit -n (мягкий лимит на процесс), fs.nr_open (максимум дескрипторов для одного процесса на уровне ядра) и cgroup pids.max (ограничение процессов/потоков в контейнере). Срабатывает самый маленький. • Сервис с утечкой горутин, который создаёт задачу на каждый з