В Linux - установите максимальные открытые файлы неограниченно. Возможное?
Можно ли установить максимальное количество открытых файлов на какое-либо "бесконечное" значение или оно должно быть числом?
У меня было требование установить лимит дескриптора для пользователя-демона как "неограниченного", и я пытаюсь определить, возможно ли это или как это сделать. Я видел, что некоторые списки рассылки ссылаются на значение "max" , которое можно использовать (как в: "myuser hard nofile max", но пока что страницы руководства и ссылки, с которыми я консультировался, не поддерживают это.
Если я не могу использовать "max" или подобное, я хотел бы знать, как определить, какое максимальное количество файлов (теоретически), поэтому у меня есть какая-то основа для любого числа, которое я выбираю. Я не хочу использовать 100000000 или что-то, если есть более разумный способ получить верхнюю границу.
Я использую RHEL 5, если это важно.
Обновление: Я идиот, когда дело доходит до написания вопросов. В идеале я хотел бы сделать это в файле limits.conf(откуда и будет "max" ). Изменит ли это какие-либо ответы?
Спасибо за комментарии. Это для экземпляра JBOSS, а не для демона, который я пишу, поэтому я не знаю, полезен ли мне метод setrlimit(). Тем не менее, Jefromi - мне нравится определение Infinity:) Я видел сообщение, которое предполагает, что файловый дескриптор - это "два шорта и указатель", поэтому я должен был бы вычислить приблизительную верхнюю границу.
Ответы
Ответ 1
POSIX позволяет установить ограничение ресурса RLIMIT_NOFILE
на RLIM_INFINITY
, используя setrlimit()
. Это означает, что система не будет применять этот предел ресурсов. Конечно, вы все равно будете ограничены реализацией (например, MAXINT
) и любыми другими ограничениями ресурсов (например, доступной памятью).
Обновление: RHEL 5 имеет максимальное значение 1048576 (2 20) для этого предела (NR_OPEN
в /usr/include/linux/fs.h
) и не будет принимать больше значение, включая бесконечность, даже для root. Итак, на RHEL 5 вы можете использовать это значение в /etc/security/limits.conf
, и это будет как можно ближе к бесконечности.
Не так давно патч Linux для Linux, чтобы этот предел был установлен на бесконечность, однако он с тех пор был возвращен в результате непредвиденных последствий.
Ответ 2
Попробуйте строку
<domain> -
заменив <domain>
на имя пользователя, в простейшем случае.
лимитная страница limits.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. .