Какая-то странная проблема. Почему-то в системе со временем число открытых файлов упирается все возможные лимиты. Сначала в 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? Можно, конечно, беспорядочно менять ядра и ось, но хочется предварительно узнать причины.
NFS обновите. Правда, непонятно куда — впереди только экспериментальные версии. Но, тем не менее, бага известная. Сталкивались с ней, когда ispmanager CE развертывали.
Первое что я бы попробовал — не раздавать статику по NFS, в рассылке nginx были упоминания что это может иметь неожиданные неприятные последствия. Поставить nginx на этот сервер, а на фронтенде просто сделать proxy_pass на него, и посмотреть что из этого выйдет.
с proxy_pass с таким же успехом можно с апача раздавать. сделать пришлось именно так, как я сделал, потому что при раздаче любых файлов nginx раздаёт асинхронно — т.е. данные сначала всё равно на диск пишет во временную папку. а т.к. диск физически на оба сервера один и тот же, диску становится плохо. в синхронном режиме получается дико медленная скорость.
пробовали на бекенде nginx настраивать proxy_buffering oт, а на фронтенде — proxy_buffering off? У меня на работе используется такая конфигурация, только там фронтенд и бекенд физически разные серверы.
> Спрашивается, зачем вообще городить…
На то могут быть свои причины, просто так от нечего делать вряд ли бы начал городить человек )
Например — 1 IP у хост-сервера, а на нем крутится несколько виртуалок с разными сайтами, и надо в зависимости от доменного имени перебрасывать посетителей на ту или иную виртуалку…