Как делают ulimit-n и/proc/sys/fs/file-max отличаются?

Я перешел бы к zabbix также (я использую его, и он очень работает отлично в распределенной среде), и также splunk, который является замечательным инструментом.

32
задан 15 March 2010 в 18:56
2 ответа

file-max максимальные Дескрипторы файлов (FD), осуществленные на уровне ядра, который не может быть превзойден всеми процессами без увеличения. ulimit осуществляется на уровне процесса, который может быть меньше, чем file-max.

Нет никакого риска влияния производительности путем увеличения file-max. Современные дистрибутивы имеют максимальный набор FD довольно высоко, тогда как в прошлом он потребовал, чтобы перекомпиляция ядра и модификация увеличили прошлые 1024. Я не увеличился бы в масштабе всей системы, если у Вас нет технической потребности.

Для конфигурации для каждого процесса часто нужно настроенный для обслуживания конкретного демона быть этим или база данных или веб-сервер. Если Вы удаляете предел полностью, тот демон мог бы потенциально исчерпать все доступные системные ресурсы; значение Вас не могло бы решить проблему кроме путем нажатия кнопки сброса или цикла включения и выключения питания. Конечно, любой из тех, вероятно, приведет к повреждению любых открытых файлов.

28
ответ дан 28 November 2019 в 19:56

Ограничение ulimit для уникального пользователя. Таким образом, user1, независимо от того, сколько раз входил в систему или запущен процесс, будет ограничен 1024. Это объединено.

Я не уверен, полностью ли я понимаю значение этого предложения (английский не мой родной язык) Если это предложение означает, что конфигурация ulimit для файловых дескрипторов не является ограничением для каждого процесса, принятый ответ (AFAIK) неверен.

Я имею в виду, что если какой-то пользователь запустил 4 процесса и конфигурация ulimit для FD равна 1024, каждый процесс может открывать 1024 ФД. Пользователь будет ограничен не 1024 FD, а процессами, которые запускаются этим пользователем.

Например:

me@superme:~$ ulimit -n
1024
me@superme:~$ lsof | grep $USER | wc -l
8145

Вот пример Perl, в котором мы достигаем предела (это ограничение для каждого процесса):

#!/usr/bin/perl

$count = 0;
@filedescriptors;

while ($count <= 1024) {
    $FILE = ${count};
    open $FILE, ">", "/tmp/example$count" or die "\n\n FDs: $count $!";
    push(@filedescriptors, $FILE);
    $count ++;
}

Результат:

11
ответ дан 28 November 2019 в 19:56

Теги

Похожие вопросы