TGViewer
BashTex | Linux BashTex | Linux @bash_tex · 2.51K subscribers
Post #533 829
Контроль превышения лимитов ulimit у сервисов

Сервис падает без причины, но в логах странные ошибки:

Too many open files
Resource temporarily unavailable
fork: retry
cannot allocate memory


Очень часто это не баг. Это лимиты ulimit.

▪️ Какие лимиты критичны
1️⃣ nofile - открытые файлы. Сколько файловых дескрипторов может открыть процесс.

Проверка:


ulimit -n


Или для конкретного процесса:


cat /proc/<PID>/limits | grep "Max open files"


Если видишь 1024, то для прод-сервиса это почти всегда мало.

2️⃣ nproc - количество процессов. Ограничение на число процессов пользователя.

Проверка:


ulimit -u


Или:


cat /proc/<PID>/limits | grep "Max processes"


Если приложение активно форкает воркеры - лимит может убить его.

▪️ Почему это сложно заметить

сервис стартует нормально
падает только под нагрузкой
в логах нет прямого указания на лимит
systemd может перезапускать бесконечно

▪️ Проверка лимитов у systemd-сервиса


systemctl show myservice | grep -E 'LimitNOFILE|LimitNPROC'


Если пусто, то используются дефолтные значения системы.

▪️ Как исправить. Создать override:


systemctl edit myservice


Добавить:


[Service]
LimitNOFILE=65535
LimitNPROC=4096


Перезагрузить:


systemctl daemon-reload
systemctl restart myservice


▪️ Быстрая диагностика падений. Если сервис падает под нагрузкой:


/proc/<PID>/limits


Посмотреть количество открытых файлов:


ls /proc/<PID>/fd | wc -l


Проверить количество процессов пользователя:


ps -u username | wc -l


BashTex 📱 #bash #check
  • 👍 8
More from @bash_tex
  1. Oct 7, 2026/dev/tcp - сетевое соединение средствами Bash В Bash есть малоизвестная возможность работа…
  2. Oct 6, 2026Ephemeral ports - почему заканчиваются исходящие TCP-порты Когда приложение устанавливает…
  3. Oct 5, 2026name_to_handle_at() - как получить файловый объект без обычного пути В Linux обычно обраща…
  4. Oct 2, 2026madvise() - как процесс подсказывает ядру, как он собирается использовать память Когда про…
  5. Oct 1, 2026flock vs fcntl - почему две блокировки одного файла могут вести себя совершенно по-разному…
  6. Sep 30, 2026DEBUG trap - как Bash выполняет код перед каждой командой В Bash есть специальный DEBUG tr…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →