Мы в настоящее время испытываем проблемы с находящимся в JBoss сервером на платформе Linux - эффективно, у нас заканчиваются доступные дескрипторы файлов в рамках процесса и карканий сервера.
Мы установили ulimit для разрешения 10 000 открытых дескрипторов файлов, и сервер последовательно отказывает, когда гораздо меньше дескрипторов файлов открыто.
Одна вещь, которую я заметил, состоит в том, что наши сценарии запуска используют chpst, и я заметил, что chpst разрешает для установки файла / обработать / пределы памяти как аргументы. Кто-либо знает, соблюдает ли chpst существующую систему ulimit, если никакие явные команды не установлены, или это использует свои собственные внутренние значения по умолчанию? Если так, где я нашел бы их?
спасибо
chpst даже не учитывает то, что вы передаете в качестве аргументов. Исходный код действительно сложен для чтения, но строгая строка подтверждает:
execve("/usr/sbin/chpst", ["chpst", "-o", "10000", "/bin/sh", "-c", "sleep 5"], [/* 26 vars */]) = 0
...
getrlimit(RLIMIT_NOFILE, {rlim_cur=1024, rlim_max=4*1024}) = 0
setrlimit(RLIMIT_NOFILE, {rlim_cur=4*1024, rlim_max=4*1024}) = 0
execve("/bin/sh", ["/bin/sh", "-c", "sleep 5"], [/* 26 vars */]) = 0
...
я бы избежал.
.Не могу добавить комментарий к Оливье Тарану, и даже если это старый вопрос, я думаю, неплохо исправить неправильные утверждения (особенно если утверждение относительно недавно).
В его strace, getrlimit говорит, что максимальное жесткое ограничение составляет 4096, и он просит chpst установить мягкое ограничение на 10000. chpst делает это, но, как описано в mangage of limits.conf , мягкие ограничения не могут превышать жесткие ограничения, которые применяются ядром и пользователем root. Единственное, что можно сказать об этом, это то, что, возможно, chpst должен вывести предупреждение, вот и все. Конечно, не «Я бы избегал».
Обратите внимание, что это означает, что исходная проблема может быть связана не с chpst, а с конфигурацией системы. chpst - это всего лишь инструмент для установки произвольных ограничений для одного процесса, это не инструмент для настройки ядер.