Необходимо "рассчитать" оптимальные значения ulimit и fs.file-max в соответствии с потребностями моего собственного сервера - PullRequest
9 голосов
/ 31 мая 2011

Необходимо "рассчитать" оптимальные значения ulimit и fs.file-max в соответствии с потребностями моего собственного сервера. Пожалуйста, не конфликтуйте с вопросами «как установить эти ограничения в различных дистрибутивах Linux».

Я спрашиваю:

  1. Есть ли хорошее руководство для подробного объяснения параметров, используемых для ulimit? (> Ядра серии 2.6)
  2. Есть ли хорошее руководство по отображению метрик использования fs.file-max?

На самом деле в сети есть несколько старых ссылок: http://www.faqs.org/docs/securing/chap6sec72.html «что-то разумное, например, 256 для каждых 4M ОЗУ, которые у нас есть: для машины с 128 МБ ОЗУ установите значение 8192 - 128/4 = 32 32 * 256 = 8192»

Любая актуальная ссылка приветствуется.

Ответы [ 2 ]

14 голосов
/ 31 мая 2011

Для fs.file-max, я думаю, что почти во всех случаях вы можете просто оставить это в покое.Если вы используете какой-то очень загруженный сервер и на самом деле не хватает файловых дескрипторов, то вы можете увеличить его, но значение, на которое вам нужно увеличить его, будет зависеть от того, какой именно сервер вы используете и какова нагрузка.на это есть.В общем, вам просто нужно увеличить его, пока у вас не закончатся файловые дескрипторы, или пока вы не поймете, что вам нужно больше памяти или больше систем для обработки нагрузки.Выигрыш от "настройки" вещей за счет уменьшения file-max ниже значения по умолчанию настолько минимален, что об этом не стоит думать - мой телефон работает нормально со значением fs-max 83588.

Кстати,современное ядро ​​уже использует эмпирическое правило для установки file-max в зависимости от объема памяти в системе;от fs/file_table.c в ядре 2.6:

    /*
     * One file with associated inode and dcache is very roughly 1K.
     * Per default don't use more than 10% of our memory for files. 
     */ 

    n = (mempages * (PAGE_SIZE / 1024)) / 10;
    files_stat.max_files = max_t(unsigned long, n, NR_FILE);

и files_stat.max_files - значение fs.file-max;в конечном итоге это будет около 100 на каждый 1 МБ оперативной памяти.

Конечно, ограничения касаются ограничения ресурсов, выделяемых пользователями или процессами.Если у вас несколько пользователей или другая подобная ситуация, вы можете решить, как вы хотите разделить системные ресурсы и ограничить использование памяти, количество процессов и т. Д. Окончательное руководство по деталям установленных ограничений - * 1012.* man-страница setrlimit (и, конечно, исходный код ядра).

2 голосов
/ 18 февраля 2014

Обычно более крупные системы, такие как Oracle или SAP, рекомендуют очень высокий предел, чтобы он никогда не менялся.Я могу только рекомендовать использовать этот подход.Структуры данных будут распределяться динамически, поэтому, пока они вам не нужны, они не используют память.Если они вам действительно нужны, это не поможет вам ограничить их, потому что при достижении лимита приложение обычно вылетает.

fs.file-max = 6815744 # это примерно предел по умолчанию дляОЗУ объемом 70 ГБ

То же самое верно для пользовательских ограничений (nofile), вы будете использовать 65535.

Обратите внимание, что обе рекомендации хороши только для выделенных серверов с критически важным приложением.и доверенные пользователи оболочки.Многопользовательский хост с интерактивной оболочкой должен иметь ограничение max.

...