2016-06-26 14 views
1

У меня есть вопрос об ограничении FD (дескрипторы):О ограничение числа дескрипторов файлов

, когда я использую «ULIMIT -n» 1000000, это означает, что программа может использовать не более 1 млн FD ресурсы,

Однако, «кошачий/Proc/SYS/фс/файл-макс» показывает, что 803766 ФД доступны в общей сложности, который меньше, чем 1000000.

Итак, что число ФД на нити поиска, что программа может использовать 1000000 или 803766?

+2

getrlimit(), setrlimit() и проверьте возвращаемое значение! RLIMIT_NOFILE - это то, что вас интересует. – wildplasser

ответ

1

/proc/sys/fs/file-max имеет приоритет над любыми настройками ulimit в оболочке.

Более /proc/sys/fs/file-max - общее количество FD открытых для ВСЕХ процессов на данной машине.

ulimit Настройки для каждого процесса, поэтому любой новый процесс будет задан лимит (если общая сумма file-max не будет превышена в системе).

+0

Итак, вы имеете в виду, что это бесполезно, если ulimit устанавливает значение больше значения из/proc/sys/fs/file-max? – ghostplant

+0

@ghostplant да –