Страница 1 из 1

BSD общий лимит дескрипторов сокетов и файлов

Добавлено: 2015-02-03 16:58:56
jet8001
система 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 на процесс?!?

BSD общий лимит дескрипторов сокетов и файлов

Добавлено: 2015-02-03 17:20:17
Sadok123
а в /etc/login.conf ничего не понапихано?

BSD общий лимит дескрипторов сокетов и файлов

Добавлено: 2015-02-03 17:57:19
jet8001
решено
у fopen, как оказалось, есть какие-то свои, особенные ограничения. нахрена они нужны и почему они игнорируют системные для меня загадка
open() в этом случае отрабатывает правильно

BSD общий лимит дескрипторов сокетов и файлов

Добавлено: 2015-02-03 18:23:12
Alex Keda
Гуглите по форуму, я года 4 назад ковырялся.
Ключевое слово FD_SETSIZE столе

Вкратце, его надо в сорцах и в системных заголовках менять, пересобирать ядро, мир, весь софт

Отправлено спустя 1 минуту 51 секунду:
http://forum.lissyara.su/viewtopic.php? ... fd+setsize

BSD общий лимит дескрипторов сокетов и файлов

Добавлено: 2015-02-03 18:39:00
jet8001
Alex, насчёт 2007 года не знаю, но сейчас эти параметры в ядре в норме
я уже отписал выше - проблема в libc / fopen

искать где там оно в сорцах libc и пересобирать не стал, заменил fopen на родной open