В Linux - установите максимальное количество открытых файлов на неограниченное количество. Возможный? - PullRequest
16 голосов
/ 31 июля 2009

Можно ли установить максимальное количество открытых файлов в какое-либо "бесконечное" значение или оно должно быть числом?

У меня было требование установить предел дескриптора для пользователя демона, чтобы он был "неограниченным", и я пытаюсь определить, возможно ли это или как это сделать. Я видел, что некоторые списки рассылки ссылаются на значение «max», которое можно использовать (как в: «myuser hard nofile max», но до сих пор справочные страницы и ссылки, с которыми я ознакомился, не поддерживают это.

Если я не могу использовать 'max' или подобное, я хотел бы знать, как определить (теоретически) максимальное количество файлов, поэтому у меня есть основания для любого числа, которое я выберу. Я не хочу использовать 100000000 или что-то еще, если есть более разумный способ получить верхнюю границу.

Я использую RHEL 5, если это важно.

Обновление: Я идиот, когда дело доходит до написания вопросов. В идеале я хотел бы сделать это в файле limit.conf (отсюда и «max»). Изменит ли это какие-либо ответы?


Спасибо за комментарии. Это для экземпляра JBOSS, а не для демона, который я пишу, поэтому я не знаю, полезен ли мне setrlimit (). Тем не менее, Джефроми - мне действительно нравится определение Бесконечности :) Я видел сообщение, в котором говорится, что файловый дескриптор "две шорты и указатель", поэтому я должен иметь возможность вычислить приблизительную верхнюю границу.

Ответы [ 2 ]

35 голосов
/ 31 июля 2009

POSIX позволяет вам установить ограничение ресурса RLIMIT_NOFILE на RLIM_INFINITY, используя setrlimit(). Это означает, что система не будет применять этот лимит ресурсов. Конечно, вы все равно будете ограничены реализацией (например, MAXINT) и любыми другими ограничениями ресурса (например, доступной памятью).

Обновление: RHEL 5 имеет максимальное значение 1048576 (2 20 ) для этого предела (NR_OPEN в /usr/include/linux/fs.h) и не будет принимать большее значение, включая бесконечность даже для корня. Поэтому в RHEL 5 вы можете использовать это значение в /etc/security/limits.conf, и оно настолько близко, насколько вы собираетесь добраться до бесконечности.

Не так давно исправление ядра Linux было применено для того, чтобы установить этот предел равным бесконечности, однако с тех пор было отменено в результате непредвиденных последствий .

1 голос
/ 05 июля 2016

Попробуйте линию

<domain>    -

замена <domain> именем пользователя в простейшем случае.

Страница man limit.conf говорит

-
    for enforcing both soft and hard resource limits together.

    Note, if you specify a type of '-' but neglect to supply the
    item and value fields then the module will never enforce any
    limits on the specified user/group etc. .
...