LINUX.ORG.RU

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

 


0

2

ситуация весьма странная

процесс даёт открыть только 32768 файловых дескрипторов причём если паралельно октрывать сокеты, то лимит файловых дескрипторов в 32768 будет уменьшаться на число открытых сокетов

главное то, что рабочих сокетов можно открыть больше 32768 (до 200к, как в конфиге), даже если перед этим было открыто файлов под завязку

из sysctl допустим так может быть -

kern.maxfiles: 204800 kern.maxfilesperproc: 200000 kern.openfiles: 43131

тут видно, что до лимитов как до общих так и до персональных на процесс ещё совсем далеко получается, что сокет при создании забирает файловый дескриптор (это логично), но игнорирует непонятно взявшийся лимит в 32768 а создание-открытие файлов в этот лимит упирается

так в чём может быть дело?



Последнее исправление: CDC7771 (всего исправлений: 1)

Может неаккуратный код проверки номера файлового дескриптора?

Elyas ★★★★★
()

если я не ошибаюсь лимиты показывают максимальное возможное кол дескрипторов при данных настройках ядра, дальше всё дело за рам, которое выделяет ядро под свои нужды, посмотри не исчерпал ли ты её

novoxudonoser
()
Ответ на: комментарий от novoxudonoser

причём тут рам? памяти 30к дескрипторов занимают 5 мегабайт примерно

к примеру 1 поток и в цикле создаётся 32768 сокетов файлы после этого не создаются с ошибкой EMFILE /* Too many open files */

если же сначала открыть 32768 файлов , то сокеты потом создаются нормально, а файлы больше не открываются

ЭТО ТОЛЬКО в рамках одного процесса проблема выделена в сыром виде, в не какого-то софта limit показывает 200к разрешенных

т.е. явно есть какая-то ещё переменная, что ставит

CDC7771
() автор топика
Ответ на: комментарий от CDC7771

причём тут рам? памяти 30к дескрипторов занимают 5 мегабайт примерно

Откуда эта цифра? Она все буферы и прочие небходимые для этих дескрипторов структуры внутри ядра учитывает?

Harald ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.