Мой веб-сервер / сервер приложений (apache / tomcat), работающий на CentOS, завис сегодня утром. Во время зависания я заметил большое количество сокетов в состоянии TIME_WAIT или CLOSE_WAIT. Я пытаюсь выяснить, как более точно определить, было ли зависание вызвано достижением максимального # файловых дескрипторов, и если да, то было ли это ограничение на процесс, ограничение на пользователя или общее ограничение ОС. Что лучше всего сделать для такого определения?
sysctl fs.file-nr
Из этой команды вы получите 3 числа. Первый - это номер используемого файлового дескриптора, второй - это номер выделенного, но не используемого файлового дескриптора, а последний - это системный максимальный файловый дескриптор.
Другой способ проверки информации fd на основе процесса -
cat /proc/pid/limits
Вы можете проверить все виды ограничений для этого процесса, включая максимальное количество открытых файлов.
Это может быть хорошим местом для начала расследования проблем, связанных с fd.