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

Количество открытых дескрипторов linux

Какой лимит, по умолчанию, на количество открытых дескрипторов файла в go? Как его менять? И есть ли общепринятые рекомендации по их количеству?

1 ответ 1

Начать стоит с проверки ulimit -a и ulimit -aH в shell’е перед запуском вашего демона. Это быстро покажет текущие «мягкие» и (второй вызов) «жесткие» ограничения. При помощи ulimit можно открутить мягкие ограничения до пределов жестких. Следует понимать, что ulimit меняет только текущие лимиты, для шелла и всех программ, запущенных в этом шелле, поэтому после завершения сессии или даже в другом окне терминала значения останутся прежними. Следующее место задания ограничений, на этот раз постоянных — это /etc/security/limits.conf и каталог /etc/security/limits.d/ , ограничение называется nofile . Редактировать (а, иногда, и смотреть) эти файлы может только суперпользователь («root»). Там задаются ограничения на отдельных пользователей или группы, применяемые на всю сессию данного пользователя, или всех пользователей определенной группы. И наконец, есть «системное ограничение», задаваемое через sysctl — это fs.nr_open :

/sbin/sysctl -n fs.nr_open ему же соответствует файл /proc/sys/fs/nr_open «Программно» манипулирование лимитами текущего процесса в пределах жестких ограничений, заданных на сессию, осуществляется через вызовы getrlimit/setrlimit, которые можно звать из Go, используя FFI (см. примеры, н-р, здесь) Источник

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

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

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

Значение сохраняется в Номер, который вы увидели, показывает количество файлов, которые пользователь мог открыть для каждого сеанса входа. Результат может отличаться в зависимости от вашей системы. Например, на сервере CentOS ограничение было установлено на 818354 Если вы хотите увидеть Hard и Soft лимит, используйте следующие команды:

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

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

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

Читайте также:  Отключить заставку при загрузке linux

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

На серверах, некоторые из ваших приложений могут потребовать более высокий лимит для открытых дескрипторов файлов. Хорошим примером этого являются службы MySQL / MariaDB или веб-сервер Apache. Вы можете увеличить лимит открытых файлов в Linux, отредактировав опцию ядра fs.file-max. Для этого используйте утилиту sysctl. Sysctl используется для настройки параметров ядра. Например, чтобы увеличить ограничение на количество открых файла до 500000, вы можете использовать следующую команду: Вы можете проверить текущее значение для количества открытых файлов с помощью следующей команды: С помощью указанной команды изменения, которые вы внесли, будут оставаться активными только до следующей перезагрузки. Если вы хотите применить их на постоянной основе, вам придется отредактировать следующий файл:

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

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

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

Спасибо за уделенное время на прочтение статьи! Если возникли вопросы, задавайте их в комментариях. Подписывайтесь на обновления нашего блога и оставайтесь в курсе новостей мира инфокоммуникаций! Источник

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

Страницы

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 Источник

Читайте также:  Linux установка временной зоны

Вики IT-KB

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

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

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

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

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

Лимит ядра Linux

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

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

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

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

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

Получить список TOP-20 процессов с самым большим количеством открытых файловых дескрипторов: Подсчитать количество открытых файлов в разрезе процессов (в первой колонке будет выведен PID процесса, во второй количество открытых файлов этим процессом): Посмотреть открытые файловые дескрипторы во всех процессах для отдельно взятого пользователя, например «apache» Подсчитать количество открытых файлов в каждом процессе для отдельно взятого пользователя: Тоже самое, только в реальном режиме времени:

Читайте также:  Настройка времени linux debian

Посмотреть открыте файловые дескриптры для отдельно взятого процесса (по PID процесса): Подсчитать количество файловых дескриптров для отдельно взятого процесса: Дополнительные источники информации: Проверено на следующих конфигурациях: Автор первичной редакции:
Алексей Максимов
Время публикации: 09.06.2018 11:18 Источник

Источник

Вики IT-KB

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

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

Лимит ядра Linux

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

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

# echo "1221724" > /proc/sys/fs/file-max

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

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

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

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

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

# cat /proc/sys/fs/file-nr
5248 0 610862

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

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

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

# for x in `ps -eF| awk '< print $2 >'`; \ do echo `ls /proc/$x/fd 2> /dev/null | \ wc -l` $x `cat /proc/$x/cmdline 2> /dev/null`; \ done | sort -n -r | head -n 20

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

# ps aux | sed 1d | awk \ '' | \ xargs -I <> bash -c <>

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

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

# lsof -u apache | awk '' | sort | uniq -c | sort -n

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

# watch 'lsof -u vdsm | awk '\'''\'' | sort | uniq -c | sort -n'

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

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

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

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

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

Обсуждение

unix-linux/linux-cli-tools/how-to-check-all-open-files-by-process-or-user-in-linux.txt · Последнее изменение: 09.06.2018 12:49 — Алексей Максимов

Источник

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