Задать вопрос

Большое количество открытых файлов в системе?

Какая-то странная проблема. Почему-то в системе со временем число открытых файлов упирается все возможные лимиты. Сначала в ulimit — увеличил:

root@XX:~# ulimit -a |grep «open files»

open files (-n) 900000

root@XX:~#

Затем в fs.file-max, увеличил:

root@XX:~# sysctl -a|grep fs.file-max

fs.file-max = 99999999

root@XX:~#

Сейчас особо проблемы нет, но при значении file-max в 200000, после ребута сервера достаточно было около половины недели, что бы достигнуть этого числа.

В итоге сейчас у меня число открытых файлов по мнению системы около 223000:

fs.file-nr = 222528 0 99999999

При этом в lsof всего 1700 записей.

Ось Ubuntu 11.04, ведро штатное 2.6.38-8 x86_64. На сервере крутится апач в качестве бэкэнда за nginx (который находится на другом сервере), так же там радио-сервер icecast (к нему клиенты не цепляются), аудио-декодер и nfs-сервер для отдачи статического контента nginx-ом с другого сервера.


Вопрос собственно такой — что это? Что с этим можно сделать? Как узнать что это за 200.000 файлов, кроме как через lsof? Можно, конечно, беспорядочно менять ядра и ось, но хочется предварительно узнать причины.
  • Вопрос задан
  • 5232 просмотра
Подписаться 3 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 5
@inkvizitor68sl
Linux-сисадмин с 8 летним стажем.
NFS обновите. Правда, непонятно куда — впереди только экспериментальные версии. Но, тем не менее, бага известная. Сталкивались с ней, когда ispmanager CE развертывали.
Ответ написан
Комментировать
@odmin4eg
Начнём с lsof | wc -l
ну и вообще man lsof

У меня на практике были подобные случаи все они оканчивались открытым почтовым relay, хотя была ещё беда апач с чего-то открывал овер9000 файлов.
Ответ написан
catlion
@catlion
Почитайте вот этот топик.
Ответ написан
Комментировать
Первое что я бы попробовал — не раздавать статику по NFS, в рассылке nginx были упоминания что это может иметь неожиданные неприятные последствия. Поставить nginx на этот сервер, а на фронтенде просто сделать proxy_pass на него, и посмотреть что из этого выйдет.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы