BSD общий лимит дескрипторов сокетов и файлов
Добавлено: 2015-02-03 16:58:56
система FreeBSD 8/9/10
в sysctl прописано
kern.maxfiles: 204800
kern.maxfilesperproc: 200000
все действия производятся под рутом
отдельно взятый процесс даёт открыть только 32764 файловых дескрипторов (32768 / 0x8000 вероятно лимит вместе с откртыми системой изначально)
если открыть 32768 сокетов, то файлов можно открыть после этого 0 (НОЛЬ)
(дальше ошибка - EMFILE /* Too many open files */)
хотя сокеты можно продолжать открывтаь до лимита в 200к, прописанного в sysctl
само собой если в это время смотреть в kern.openfiles, то до kern.maxfilesperproc: 200000 там очень далеко
тоесть вот этот лимит непонятный в 32768 он общий на файлы и сокеты открытые, но при заполнениии сокеты его игнорируют, а файлы нет
не понятно почему он вообще есть и почему он отличается от того, что висит в sysctl
есть мысли как его можно увеличить?
Отправлено спустя 25 минут :
getrlimit c параметром RLIMIT_OFILE возвращает 200000 / 200000
собственно как и должно быть в соответствии с kern.maxfilesperproc
но откуда тогда берётся ограничение в 32768 на процесс?!?
в sysctl прописано
kern.maxfiles: 204800
kern.maxfilesperproc: 200000
все действия производятся под рутом
отдельно взятый процесс даёт открыть только 32764 файловых дескрипторов (32768 / 0x8000 вероятно лимит вместе с откртыми системой изначально)
если открыть 32768 сокетов, то файлов можно открыть после этого 0 (НОЛЬ)
(дальше ошибка - EMFILE /* Too many open files */)
хотя сокеты можно продолжать открывтаь до лимита в 200к, прописанного в sysctl
само собой если в это время смотреть в kern.openfiles, то до kern.maxfilesperproc: 200000 там очень далеко
тоесть вот этот лимит непонятный в 32768 он общий на файлы и сокеты открытые, но при заполнениии сокеты его игнорируют, а файлы нет
не понятно почему он вообще есть и почему он отличается от того, что висит в sysctl
есть мысли как его можно увеличить?
Отправлено спустя 25 минут :
getrlimit c параметром RLIMIT_OFILE возвращает 200000 / 200000
собственно как и должно быть в соответствии с kern.maxfilesperproc
но откуда тогда берётся ограничение в 32768 на процесс?!?