Назад | Перейти на главную страницу

Слишком много открытых файлов (в CentOS)

Недавно я столкнулся с этой проблемой на одной из наших производственных машин. Фактическая проблема с PHP выглядела так:

fopen (dberror_20110308.txt): не удалось открыть поток: слишком много открытых файлов

Я использую стек LAMP вместе с кешем памяти на этой машине. Я также запускаю на этой машине несколько приложений Java. Хотя я увеличил ограничение на количество файлов, которые могут быть открыты, до 10000 (с 1024), я действительно хотел бы знать, есть ли простой способ отслеживать это (количество файлов, открытых в любой момент) в качестве метрики. Я знаю, что lsof - это команда, которая выводит список дескрипторов файлов, открытых процессами. Интересно, есть ли другой лучший (с точки зрения отчетов) способ отслеживания этого, например, nagios.

Вы можете посмотреть / proc / sys / fs / file-nr

cat /proc/sys/fs/file-nr
3391    969     52427
|        |       |
|        |       |
|        |       maximum open file descriptors
|        total free allocated file descriptors
total allocated file descriptors

Общее количество выделенных файловых дескрипторов означает количество файловых дескрипторов, выделенных с момента загрузки. Это можно рассматривать как высшую точку максимального количества файлов, открытых одновременно. Когда они освобождаются, они переходят во второй столбец, поэтому количество открытых файлов в любой момент времени будет от столбца 1 до столбца 2.

/proc/sys/fs/file-nr показывает количество файловых дескрипторов, открытых для всей системы, и максимальное количество файловых дескрипторов. Для отдельных процессов вы можете посмотреть /proc/$pid/fd/*.

/ proc / sys / fs / file-nr дает вам общее количество открытых файлов в системе (и на это есть ограничение), но ваша текущая проблема - это количество открытых файлов. за процесс

Каждый открытый файл представлен файлом в / proc /пид/ fd

Итак, вам просто нужно определить pid для процессов, открывающих много файлов (похоже, проблема в вашей базе данных) и подсчитать соответствующие файлы.

Но мне кажется немного странным, что это БД, в которой слишком много открытых файлов. И не удается открыть txt файл?