Меню Рубрики

Linux количество открытых файлов linux

Как увеличить лимит Открытых файлов в Ubuntu/Debian/CentOS/Fedora

Периодически при работе сервера вы можете столкнуться с ошибкой ” Too many open files ” в Linux системах. Чаще всего это бывает на нагруженных серверах. Это значит, что сервер достиг лимита на количество открытых файлов. Этот лимит может быть указан для конкретного пользователя или сессии.

В этой статье я расскажу какие бывают лимиты (а их два вида) и как их увеличить.

  • Жесткий лимит – максимальное количество открытых файлов для пользователя или сессии. Устанавливается только администратором/root
  • Мягкий лимит – текущее эффективное значение для пользователя или сессии. Может быть изменен самим пользователем, но значение не может превышать жесткого лимита.

Проверка текущих лимитов

Для контроля лимита ресурсов в Linux имеется утилита ulimit .

Получим текущее значение лимитов:

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

Чтобы узнать жесткий и мягкие лимиты, используйте следующие команды:

ulimit -Sn # Мягкий лимит
ulimit -Hn # Жесткий лимит

Увеличение лимита для текущей сесии

Большинство операционных систем позволяют изменить лимит открытых файлов для текущей сессии с помощью команды ulimit -n :

Увеличение лимита для пользователя

Вы также можете изменить лимиты для каждого пользователя в отдельности. Для этого нужно отредактировать файл /etc/security/limits.conf в удобном вам редакторе, в моем случае это будет vim

и добавить в него следующие строки:

* soft nproc 65535
* hard nproc 65535
* soft nofile 65535
* hard nofile 65535
max soft nproc 20000
max hard nproc 20000
max soft nofile 20000
max hard nofile 20000

Это значит, что для пользователя ” max ” будут установлены лимиты в 20000 , а для всех остальных пользователей – 65535 . Измените эти значение по своему усмотрению.

Изменение лимита для всей системы

Вы также можете изменить лимиты для всех пользователей системы, для этого нужно отредактировать параметры sysctl . Откройте в редакторе файл /etc/sysctl.conf и добавьте следующую строку:

После чего примените эти изменения командой

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

Источник

Вики IT-KB

Пошаговые руководства, шпаргалки, полезные ссылки.

Инструменты пользователя

Инструменты сайта

Боковая панель

Содержание

Как проверить все открытые файлы пользователем или процессом в Linux

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

Лимит ядра Linux

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

Этот лимит может быть изменён без перезагрузки системы (начинает действовать сразу и действует до перезагрузки):

Чтобы требуемое значение использовалось постоянно, то есть действовало и после перезагрузки, его необходимо определить в конфиг.файле /etc/sysclt.conf :

Методика подсчёта открытых файлов

Для получения информации о количестве всех открытых файлов всеми процессами в Linux некоторые «знатоки» предлагают использовать команду типа

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

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

Первое число – общее количество занятых/используемых на данный момент времени файловых дескрипторов.
Второе число – количество выделенных процессам, но не используемых в данный момент дескрипторов.
Третье число – максимальное количество открытых дескрипторов

Примеры получения данных

Получить список TOP-20 процессов с самым большим количеством открытых файловых дескрипторов:

Подсчитать количество открытых файлов в разрезе процессов (в первой колонке будет выведен PID процесса, во второй количество открытых файлов этим процессом):

Посмотреть открытые файловые дескрипторы во всех процессах для отдельно взятого пользователя, например «apache»

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

Тоже самое, только в реальном режиме времени:

Посмотреть открыте файловые дескриптры для отдельно взятого процесса (по PID процесса):

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

Дополнительные источники информации:

Проверено на следующих конфигурациях:

Автор первичной редакции:
Алексей Максимов
Время публикации: 09.06.2018 11:18

Источник

Как увеличить количество открытых файлов в Linux

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

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

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

Как найти количество открытых файлов в Linux

Значение сохраняется в

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

Например, на сервере CentOS ограничение было установлено на 818354

Если вы хотите увидеть Hard и Soft лимит, используйте следующие команды:

Проверка Hard лимит в Linux

Проверка Soft лимит в Linux

Чтобы просмотреть значения Hard и Soft для разных пользователей, переключите пользователя с «su» на пользователя, ограничения которого вы хотите проверить.Например:

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

На серверах, некоторые из ваших приложений могут потребовать более высокий лимит для открытых дескрипторов файлов. Хорошим примером этого являются службы MySQL / MariaDB или веб-сервер Apache.

Вы можете увеличить лимит открытых файлов в Linux, отредактировав опцию ядра fs.file-max. Для этого используйте утилиту sysctl.

Sysctl используется для настройки параметров ядра.

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

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

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

Добавьте следующую команду:

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

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

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

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

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

Команды, которые вы должны добавить, имеют следующие параметры:

Вот пример установки Soft и Hard лимитов для пользователя dimon:

Спасибо за уделенное время на прочтение статьи!

Если возникли вопросы, задавайте их в комментариях.

Подписывайтесь на обновления нашего блога и оставайтесь в курсе новостей мира инфокоммуникаций!

Источник

Денис Туляков – блог о том, что мне интересно

Заметки о *nix системах о железках о DB и даже о windows, возможно, ещё что то .

Страницы

2015-02-06

Количество открытых файлов, сокетов

Достаточно часто возникают ошибки связанные с тем, что превышен лимит открытых файлов или общего количества файлов.
Такие лимиты бывают нескольких видов:
– накладываемые ядром
– накладываемые PAM
– накладываются самими программами

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

cat /proc/sys/fs/file-max
Может быть легко изменено “на лету” (останется до перезагрузки компьютера):
echo “104854” > /proc/sys/fs/file-max
Если хочется чтобы новое значение использовалось постоянно, его необходимо внести в /etc/sysclt.conf:

fs.file-max=104854
Посмотреть текущее количество дескрипторов открытых файлов:

cat /proc/sys/fs/file-nr
3391 969 104854
| | |
| | |
| | максимальное число открытых файловых дескрипторов
| число занятых(выделенных), но не используемых дескрпиторов
общее число занятых дескрипторов
2) Ограничения накладываемые PAM
Если на машине используются PAM (подключаемые модули авторизации), можно столкнуться с ограничениями
на количество открытых файлов для пользователя (bind, mysql).
Ограничения задаются в /etc/security/limits.conf.
Файл хорошо документирован, есть man-страница limits.conf (5).
Есть 2 типа ограничений:
soft и hard мягкий и жесткий лимита соответственно. soft может быть изменен в самой программе. hard может быть изменен только суперпользователем. Ограничивать можно”
a. пользователя –
б. группу – @
в. всех – *

Общее количество открытых файлов можно также можно посмотреть с помощью комманды lsof:

lsof | wc -l
Эта же комманда позволяет посмотреть файлы открытые конкретными приложениями:
lsof | grep 29384 (где 29384 – это PID необходимого приложения).
Менее ресурсоёмкая команда, для этой же цели:

ls -l /proc/29384/fd/
Для работы с Unix-сокетами также требуется получение дескриптора файла, поэтому приложения работающие с UNIX-сокетами могут также попадать под ограничение на количество файлов. Для просмотра сокетов можно использовать Perl-скрипт: socklist (8), который входит в состав пакета procinfo (название пакета в Debian, RHEL) или комманду netstat (8): netstat -uxp

Источник


Adblock
detector