Linux to many open files

Содержание
  1. How to Fix the ‘Too Many Open Files’ Error in Linux?
  2. ‘Too Many Open Files’ Error & Open File Limits in Linux
  3. How to Increase the Max Open File Limit in Linux?
  4. Increasing the Open File Descriptor Limit per Service
  5. How to Set Max Open Files Limit for Nginx & Apache?
  6. Change the Open File Limit for the Current Session
  7. Исправляем ошибку “Too many open files“ в Linux
  8. Ошибка: Too many open files и лимиты на количество открытых файлов в Linux
  9. Настройки лимитов ограничения на количество одновременно открытых файлов в Linux
  10. Увеличить лимита открытых файловых дескрипторов для отдельного сервиса
  11. Увеличение максимального количества открытых файлов для Nginx и Apache
  12. Лимиты file-max для текущей сессии
  13. linux-notes.org
  14. Увеличить Max Open File Limit в Unix/Linux
  15. Увеличить Max Open File Limit в Linux
  16. Увеличить Max Open File Limit в Mac OS X
  17. Увеличюем nginx worker_rlimit_nofile в nginx ( на уровне Nginx)
  18. Включение ограничений на основе PAM в Unix/Lixux
  19. 3 thoughts on “ Увеличить Max Open File Limit в Unix/Linux ”
  20. Добавить комментарий Отменить ответ
  21. Ошибка too many open files в Linux
  22. Ошибка too many open files Linux
  23. Выводы

How to Fix the ‘Too Many Open Files’ Error in Linux?

Very often ‘too many open files’ errors occur on high-load Linux servers. It means that a process has opened too many files (file descriptors) and cannot open new ones. In Linux, the maximum open file limits are set by default for each process or user and the values are rather small.

In this article we will learn how to check the current limit on the maximum number of open files in Linux and how to change it for the entire host, individual service or a current session.

‘Too Many Open Files’ Error & Open File Limits in Linux

First of all, let’s see where the ‘too many open files’ error appears. The most often it occurs on the servers with an installed NGINX/httpd web server or a database server (MySQL/MariaDB/PostgreSQL) when reading a large number of logs. For example, when an Nginx web server exceeds the open file limit, you will see an error:

Using this command, you can get the maximum number of file descriptors your system can open:

The open file limit for a current user is 1024. You can check it as follows:

There are two limit types: Hard and Soft. A user can change a soft limit (however, the soft value cannot exceed the hard one). Only a privileged or root user can modify a hard limit value.

To display the soft limit, run this command:

To display the hard limit value:

How to Increase the Max Open File Limit in Linux?

To allow all services open a large number of files, you can change the limits in your Linux OS. To make new settings permanent and prevent their reset after a server or session restart, you must make changes to /etc/security/limits.conf. Add these lines:

If you are using Ubuntu, add this line as well:

This parameter allows to set open files limits after user authentication.

After making any changes, reload the terminal and check the max_open_files value:

Increasing the Open File Descriptor Limit per Service

You can change the limit of open file descriptors for a specific service, rather than for the entire operating system. Let’s take apache as an example. Open the service settings using systemctl:

# systemctl edit httpd.service

Add the limits you want, e.g.:

Читайте также:  Amd ryzen 5500u linux

After making the changes, update the service configuration and restart it:

# systemctl daemon-reload
# systemctl restart httpd.service

To make sure if the values have changed, get the service PID:

# systemctl status httpd.service

For example, the service PID is 3724:

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

Thus, you have changed the values for the maximum number of open files for a specific service.

How to Set Max Open Files Limit for Nginx & Apache?

When changing the limit on the number of open files for a web server, you also have to change the service configuration file. For example, specify/change the following directive value in the Nginx configuration file /etc/nginx/nginx.conf:

Then restart Nginx.

For apache, create a directory:

Then create the limit_nofile.conf file:

Don’t forget to restart httpd.

Change the Open File Limit for the Current Session

To change maximum open file limits for your terminal session, run this command:

After closing the terminal and creating a new session, the limits will get back to the original values specified in /etc/security/limits.conf.

To change the general value for the system /proc/sys/fs/file-max, change the fs.file-max value in /etc/sysctl.conf:

In this article we have learned how to solve the issue when the value of open file descriptor limit in Linux is too small, and discussed some options of changing these limits on the server.

Источник

Исправляем ошибку “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, нужно прописать/изменить значение в директиве:

После чего выполнить рестарт 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 соответственно.

Читайте также:  Linux mint для raspberry

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

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

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

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

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

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

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

Источник

Ошибка too many open files в Linux

Если вы работали с программами, которым приходится обрабатывать очень большое количество файловых дескрипторов, например с распределенными базами данных, такими, как Elasticsearch, то вы, наверняка, сталкивались с ошибкой «too many open files в Linux».

В этой небольшой статье мы разберемся, что означает эта ошибка, а также как её исправить в различных ситуациях.

Ошибка too many open files Linux

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

Посмотреть, сколько файлов можно открыть в вашей файловой системе, можно, выполнив команду:

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

Утилита ulimit возвращает два вида ограничений — hard и soft. Ограничение soft вы можете менять в любую сторону, пока оно не превышает hard. Ограничение hard можно менять только в меньшую сторону от имени обычного пользователя. От имени суперпользователя можно менять оба вида ограничений так, как нужно. По умолчанию отображаются soft-ограничения:

Чтобы вывести hard, используйте опцию -H:

Вы можете изменить ограничение, просто передав в ulimit новое значение:

Но поскольку hard-ограничение составляет 4000, то установить лимит больше этого значения вы не сможете. Чтобы изменить настройки ограничений для пользователя на постоянной основе, нужно настроить файл /etc/security/limits.conf. Синтаксис у него такой:

имя_пользователя тип_ограничения название_ограничения значение

Вместо имени пользователя можно использовать звездочку, чтобы изменения применялись ко всем пользователям в системе. Тип ограничения может быть soft или hard. Название — в нашем случае нужно nofile. И последний пункт — нужное значение. Установим максимум — 1617596.

sudo vi /etc/security/limits.conf

* hard nofile 1617596
* soft nofile 1617596

Нужно установить значение для soft и hard параметра, если вы хотите, чтобы изменения вступили в силу. Также убедитесь, что в файле /etc/pam.d/common-session есть такая строчка:

session required pam_limits.so

Если её нет, добавьте в конец. Она нужна, чтобы ваши ограничения загружались при авторизации пользователя.

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

sudo systemctl edit имя_сервиса

И добавьте в открывшейся файл такие строки:

[Service]
LimitNOFILE=1617596
LimitNOFILESoft=1617596

Здесь мы устанавливаем максимально возможное ограничение как для hard- так и для soft-параметра. Дальше нужно закрыть этот файл и обновить конфигурацию сервисов:

sudo systemctl daemon-reload

Затем перезагрузить нужный сервис:

sudo systemctl restart имя_сервиса

Убедится, что для вашего сервиса применились нужные ограничения, можно, открыв файл по пути /proc/pid_сервиса/limits. Сначала смотрим PID нужного нам сервиса:

ps aux | grep elasticsearch

Затем смотрим информацию:

Выводы

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

Источник

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