Максимальное число открытых файлов linux

Содержание
  1. Максимально допустимо число открытых файлов в Linux?
  2. почему не соответствие в файлах и коменде?
  3. 3 способа изменить ограничение на количество открытых файлов в ОС Linux
  4. Зачем суживать количество открытых файлов
  5. Бригада ulimit
  6. Модуль подключаемых модулей аутентификации (PAM)
  7. Общесистемный предел
  8. Исправляем ошибку “Too many open files“ в Linux
  9. Ошибка: Too many open files и лимиты на количество открытых файлов в Linux
  10. Настройки лимитов ограничения на количество одновременно открытых файлов в Linux
  11. Увеличить лимита открытых файловых дескрипторов для отдельного сервиса
  12. Увеличение максимального количества открытых файлов для Nginx и Apache
  13. Лимиты file-max для текущей сессии
  14. linux-notes.org
  15. Увеличить Max Open File Limit в Unix/Linux
  16. Увеличить Max Open File Limit в Linux
  17. Увеличить Max Open File Limit в Mac OS X
  18. Увеличюем nginx worker_rlimit_nofile в nginx ( на уровне Nginx)
  19. Включение ограничений на основе PAM в Unix/Lixux
  20. 3 thoughts on “ Увеличить Max Open File Limit в Unix/Linux ”
  21. Добавить комментарий Отменить ответ

Максимально допустимо число открытых файлов в Linux?

Добрый день, Столкнулся с проблемой используя программы на Java. Которая во время используя открывает массу файлов.

Если увеличить лимит до 900000, то запускается. Может быть такое количество? почему такой лимит маленький по-умолчанию? 1024 или 2048. lsof|grep -i /opt/storage|wc -l 511231

Для пользователя, от которого запускается программа выставлен лимит на открытых файловых дескрипторов

почему такой лимит маленький по-умолчанию?

Потому что так решил создатель дистрибутива.

Лучше бы спросил что за джябаговнокод такой, что столько файлов разом открывает.

почему не соответствие в файлах и коменде?

почему не соответствие в файлах и коменде?

[root@apm-dgt-ms apm]# su — user Last login: Tue May 16 09:11:02 EEST 2017 on pts/1

-bash-4.2$ ulimit -a core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited scheduling priority (-e) 0 file size (blocks, -f) unlimited pending signals (-i) 514837 max locked memory (kbytes, -l) 64 max memory size (kbytes, -m) unlimited open files (-n) 2048 pipe size (512 bytes, -p) 8 POSIX message queues (bytes, -q) 819200 real-time priority (-r) 0 stack size (kbytes, -s) 8192 cpu time (seconds, -t) unlimited max user processes (-u) 4096 virtual memory (kbytes, -v) unlimited file locks (-x) unlimited

#* soft core 0 #* hard rss 10000 #@student hard nproc 20 #@faculty soft nproc 20 #@faculty hard nproc 50 #ftp hard nproc 0 #@student — maxlogins 4 * — nofile 2048 user hard nofile 900000 # End of file

Источник

3 способа изменить ограничение на количество открытых файлов в ОС Linux

Операционная система временно присваивает файлу номер, называемый дескриптором файла, когда он открыт для доступа. Особая область основной памяти зарезервирована для дескрипторов файлов, и размер этой области определяет, насколько файлов может быть открыто одновременно. Процессы в Linux ограничены рядом ограничений, какие также препятствуют их правильному выполнению, и каждый процесс имеет несколько ограничений, связанных с ним. Оболочка суживает количество файлов, которые программы могут открывать одновременно. В этой статье я покажу вам разные методы, которые вы можете использовать для изменения количества открытых файлов в Linux.

Зачем суживать количество открытых файлов

Поскольку операционной системе требуется память для управления каждым файлом, вы сможете столкнуться с ограничением количества файлов, которые можно открыть. Поскольку программа также сможет закрывать обработчики файлов, она может создавать множество файлов любого размера, пока все вразумительное дисковое пространство не будет заполнено. В этом случае одним из аспектов безопасности является предупреждение исчерпания ресурсов путем введения ограничений.
В Linux существует два вида ограничений:

  • Soft Limit Свойство, которое может быть изменено процессом в любое время.
  • Hard Limit обозначает наибольшее значение, которое не может быть превышено путем установки мягкого ограничения

Вы можете увидать максимальное количество открытых файловых дескрипторов в вашей системе Linux, как показано ниже:
# cat /proc/sys/fs/file-max100576
Свойство показывает количество файлов, которые пользователь может открыть за сеанс входа в систему, но вы обязаны заметить, что результат может отличаться в зависимости от вашей системы. По некоторым причинам может понадобиться увеличить значение набора ограничений. Вот почему ваша система Linux предлагает возможность (повышая или уменьшая) изменять эти ограничения, изменяя максимальное количество открытых файлов на процесс и на систему.

Читайте также:  Bat файл центра обновления windows

Бригада ulimit

Команду ulimit можно использовать для увеличения количества файлов, которые можно раскрыть в оболочке. Эта команда является встроенной командой bash, поэтому она влияет только на bash и програмки, запускаемые из него. Синтаксис ulimit следующий:
Ulimit [options [limit]]
Параметры определяют, что довольствуется. Вы можете увидеть некоторые варианты, как показано ниже

  • -a (Передача текущих настроек): заставляет ulimit извещать о своих текущих настройках.
  • -f (Ограничения файлов) ограничивает размер файлов, которые могут быть сделаны оболочкой.
  • -n Ограничивает количество открытых файловых дескрипторов.
  • -H и -S (Жесткие и мягкие ограничения) параметры меняют другие параметры, в результате чего они устанавливаются как жесткие или мягкие ограничения соответственно. Жесткие ограничения смогут впоследствии не увеличиваться, но мягкие ограничения могут быть. Если ни один из вариантов не предусмотрен, ulimit ставит как жесткие, так и мягкие ограничения для указанной функции.

Итак, чтобы увидеть текущее ограничение, вы сможете сделать, как показано ниже:
$ ulimit — a | grep openopen files (-n) 1024
Вы можете проверить жесткий предел, как показано ниже:
$ ulimit — Hn4096
И мягкий предел, как показано ниже:
$ ulimit — Sn1024
Вы можете изменить ограничение, как представлено ниже
$ ulimit — n 3000
И вы можете проверить это ниже:
$ ulimit — n 3000
Проблема сейчас в том, что если вы выйдете из системы и войдете в систему или перезагрузите пк, значение будет сброшено. Помните, что для того, чтобы сделать эти ограничения более постоянными, нужно отредактировать один из файлов конфигурации пользователя ( .bashrc or .profile ) или общесистемные файлы конфигурации ( /etc/bashrc or /etc/profile ) приплюсовав командную строку ulimit в конец файла, как показано ниже.
# vim. bash_profileulimit — n 3000
Теперь, простонар если вы перезагрузитесь, ограничение, установленное пользователем, будет постоянным. Вы можете увеличить только твердый лимит ( -Hn ) или мягкий лимит ( -Sn ), но вы должны заметить, что мягкие ограничения могут быть установлены другым пользователем, в то время как жесткие ограничения могут быть изменены только пользователем root после его аппараты.

Модуль подключаемых модулей аутентификации (PAM)

Устанавливать такие ограничения лучше всего с помощью Включаемых модулей аутентификации (PAM), называемых Pam_limits. Большинство основных дистрибутивов Linux используют этот часть как часть своей стандартной конфигурации PAM, поэтому он уже присутствует в некоторых системах Linux, но вам нужно станет настроить его, отредактировав /etc/security/limits. conf файл. Этот файл содержит четыре главных поля:

  • Домен: Он описывает сущность, к которой применяется ограничение. Это может быть имя пользователя, заглавие группы (с формой @groupname) или подстановочный знак со звездочкой ( * ), который соответствует всем. Хотя вы должны заметить, что подстановочный знак не применяется к корневому пользователю
  • Тип: В этом поле указывается ограничение как безжалостное или мягкое. Жесткий лимит устанавливается системным администратором и не может быть превышен ни при каких жизненных обстоятельствах, в то время как пользователь может временно превысить мягкий лимит. Вы также можете использовать тире ( — ), дабы указать, что ограничение является как жестким, так и мягким. Обратите внимание, что мягкий лимит может быть повышен до значения жесткого лимита
  • Элемент: Он указывает, какой тип элемента ограничен. Это может быть Nofile (число открытых файлов данных), Fsize (размер файлов, созданных пользователем), Core (размер главных файлов) и т.д.
  • Значение: Оно указывает значение, которое должно быть применено к пределу

Вы можете увидать, например, содержимое этого файла, как показано ниже:

# tail — f — n 12 /etc/security/limits. conf # ##* soft core 0#* hard rss 10000#@student hard nproc 20#@faculty soft nproc 20#@faculty hard nproc 50#ftp hard nproc 0#@student — maxlogins 4# End of file

Дабы отредактировать максимальное количество открытых файлов для всех пользователей, вы можете добавить, например, приплюсовать в конец файла строки ниже:

Читайте также:  Как сделать принтер доступным по сети windows 10

# vim /etc/security/limits. conf* hard nofile 20000* soft nofile 15000

После данного вам необходимо отредактировать файл /etc/pam. d/login

# vim /etc/pam. d/loginsession required pam_limits. so

Затем сохраните файл. Вы сможете проверить результат, как показано ниже:

Общесистемный предел

В системе Linux у нас есть Файл-макс, какой является максимальным дескриптором файлов (FD), и настройки по умолчанию для ulimit и file-max предполагают, что несколько юзеров будут совместно использовать систему. Вот почему эти настройки ограничивают количество ресурсов, используемых любым пользователем. Вы можете увеличить количество открытых файлов в Linux, отредактировав /etc/sysctl. conf или путем редактирования директивы Fs. file-max

Вы сможете увидеть текущее значение для открытых файлов с помощью команды

И вы можете менять значение по умолчанию, как показано ниже:

# sysctl — w fs. file-max=250000fs. file-max = 250000

Вы можете проверить итог, как показано ниже

С помощью Sysctl command, изменения применяются до следующей повторная загрузки. Чтобы сделать конфигурацию постоянной, вы можете напрямую отредактировать /etc/sysctl. conf файл, как представлено ниже:

# vim /etc/sysctl. conffs. file-max=250000

Если вы перечислите содержание /proc/sys/fs/file-max , вы увидите, что модифицирование не вступило в силу напрямую. Теперь вам нужно напрямую применить изменения с помощью опции — p бригады sysctl, как показано ниже:

Источник

Исправляем ошибку “Too many open files“ в Linux

Очень часто при работе на высоконагруженных Linux серверах могут возникать ошибки “too many open files». Это означает, что программа открыла слишком много файлов (читай файловых дескрипторов) и не может открыть новые. В Linux ограничения “max open file limit“ установлены по умолчанию для каждого процесса и пользователя, и они не слишком высокие.

В данной статье мы рассмотрим, как проверить текущие ограничения по количеству открытых файлов, как его изменить эту настройку для всего сервера, для отдельных сервисов и для сеанса.

Ошибка: Too many open files и лимиты на количество открытых файлов в Linux

Для начала разберемся, где мы можем наблюдать ошибку “too many open files“. Чаще всего эта ошибка встречается на серверах с установленным веб-серверов NGINX/httpd, сервером БД (MySQL/MariaDB/PostgreSQL), при чтении большого количества логов. Например, когда веб-серверу Nginx не хватает лимита для открытия файлов, вы получите ошибку:

Максимально количество файловых дескрипторов, которые могут быть открыты в вашей системе можно узнать так:

Ограничение на количество открытых файлов для текущего пользователя – 1024. Можно проверить так:

Есть два типа ограничений: Hard и Soft. Пользователь может изменить лимит для soft ограничения (но значение soft не может превышать hard). Hard ограничение можно изменить только от привилегированного пользователя.

Для вывода Soft -граничения выполните:

Для вывода Hard-ограничения:

Настройки лимитов ограничения на количество одновременно открытых файлов в Linux

Чтобы разрешить всем сервисам открывать большее количество файлов, можно изменить лимиты на уровне всей ОС Linux. Чтобы новые настройки работали постоянно и не сбрасывались при перезапуске сервера или сессии, нужно поправить файл /etc/security/limits.conf. Добавьте строки:

Ели вы используете Ubuntu, нужно прописать строку:

Данный параметр добавляет возможность загрузки ограничений при авторизации пользователя.

После изменений, перезапустите терминал и проверьте значение лимита max_open_files:

Увеличить лимита открытых файловых дескрипторов для отдельного сервиса

Вы можете изменить лимит на количество открытых файловых дескрипторов для конкретного сервиса, а не для всей системы. Рассмотрим на примере apache. Чтобы изменить значения, откройте настройки службы через systemctl: # systemctl edit httpd.service Добавьте необходимые лимиты, например:

После изменения, нужно обновить конфигурацию сервиса и перезапустить его:

# systemctl daemon-reload
# systemctl restart httpd.service

Чтобы проверить, изменились ли значения, нужно получить PID сервиса:

# systemctl status httpd.service

Например, вы определил PID сервиса 32724:

# cat /proc/32724/limits | grep «Max open files”

Так вы изменили значения Max open files для конкретного сервиса.

Увеличение максимального количества открытых файлов для Nginx и Apache

При изменении ограничения на количество открытых файлов для веб-сервера, нужно также поправить конфигурационный файл службы. Например, для Nginx в файле конфигурации /etc/nginx/nginx.conf, нужно прописать/изменить значение в директиве:

Читайте также:  Linux аналог windows server

После чего выполнить рестарт Nginx.

Для apache, нужно создать директорию:

После этого создайте файл limit_nofile.conf:

И добавьте в него:

Не забудьте перезапустить сервис httpd.

Лимиты file-max для текущей сессии

Чтобы изменить лимиты на открытые файлы в рамках вашей сессии терминала, выполните команду:

При закрытии терминала и создания новой сессии, лимиты вернуться к начальным значениям, указанным в файле /etc/security/limits.conf.

Чтобы изменить общее значение в системе /proc/sys/fs/file-max, измените значение fs.file-max в /etc/sysctl.conf:

В данной статье мы разобрались, как решить проблему с недостаточным лимитом для открытых файловых дескрипторов в Linux и рассмотрели несколько вариантов изменения лимитов на сервере.

Источник

linux-notes.org

Несколько раз я сталкивался с ошибкой «Too many open files»(Слишком много открытых файлов) на сервере с высокой нагрузкой. Это означает, что сервер исчерпывает ресурс на максимальный предел открытых файлов (max open file limit). Теперь вопрос в том, как я могу увеличить лимиты открытых файлов на Linux? Да все очень просто, в своей статье «Увеличить Max Open File Limit в Unix/Linux» покажу как это выполняется.

Увеличить Max Open File Limit в Unix/Linux

Приведу команды на различные Unix/Linux ОС

Увеличить Max Open File Limit в Linux

Для начала проверим какой предел установлен в ОС:

Увеличиваем данный предел в Linux

Мы можем увеличить лимиты для открытых файлов:

-===ВРЕМЕННО===-

Если есть необходимость увеличить лимит временно (для тестирования, например), то можно это сделать так:

Вот еще один пример:

-===ПОСТОЯННО===-

Если есть необходимость увеличить лимит навсегда, то можно это сделать так:

Эти настройки будут сохраняться даже после перезагрузки системы. После добавления конфигурации в файл, выполните следующую команду, чтобы изменения вступили в силу:

Настройка лимитов для каждого пользователя

Проверка установленных лимитов

Используйте следующую команду, чтобы увидеть максимальное чисто для открытых файлов:

Подключаемся от пользователя (у меня это nginx):

Проверяем параметры Hard лимитов :

В консоле, можно ввести данную команду (очень удобно отображает):

Проверяем параметры лимитов Soft :

Увеличить Max Open File Limit в Mac OS X

Выполним проверку лимитов с помощью:

  • Первый аргумент — soft limit.
  • Второй аргумент — hard limit.

Можно прописать в файл:

Увеличюем nginx worker_rlimit_nofile в nginx ( на уровне Nginx)

В nginx также можно увеличить лимиты с директивой worker_rlimit_nofile, которая позволяет увеличить этот лимит, если это не хватает данного ресурса на лету на уровне процесса:

И прописываем (редактируем):

После чего, проверяем конфигурацию nginx и перезапускаем его:
Save and close the file. Reload nginx web server, enter:

В комментариях писали что нельзя установить данные лимиты для Kali Linux. Вот, решил показать наглядный пример:

ulimit в Kali Linux

Включение ограничений на основе PAM в Unix/Lixux

Для Debian/Ubuntu

Редактируем файл (Debian/Ubuntu):

Открываем еще один файл:

И, приводим к виду:

И выполняем рестарт:

Для CentOS/RedHat/Fedora

Редактируем файл (Debian/Ubuntu):

Открываем еще один файл:

И, приводим к виду:

И выполняем рестарт:

У меня все! Статья «Увеличить Max Open File Limit в Unix/Linux», завершено.

3 thoughts on “ Увеличить Max Open File Limit в Unix/Linux ”

в kali linux не работает смена хард и софт лимитов. всё равно пишет 4096 и 1024 соответственно.

Можно! Что-то делаете не так. Я выложил скриншот в статье и показал что можно все сделать.

Мужикам на картинке к статье явно не повезло.

Свет приглушён, явно видно зелёный оттенок табличек аварийного освещения — либо дело за полночь, либо у них блекаут и работают от дизеля.

Сидят за консолью. По сети, оно, похоже, уже не отвечает. Плохо дело.

Стул притащили. Значит, давно не отвечает. Надо было прописать MAX OPEN FILE LIMIT заранее, а не когда уже навернулось.

Добавить комментарий Отменить ответ

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

Источник

Оцените статью