- Лимиты на число одновременно открытых дескрипторов файлов
- Максимально допустимо число открытых файлов в Linux?
- почему не соответствие в файлах и коменде?
- Исправляем ошибку “Too many open files“ в Linux
- Ошибка: Too many open files и лимиты на количество открытых файлов в Linux
- Настройки лимитов ограничения на количество одновременно открытых файлов в Linux
- Увеличить лимита открытых файловых дескрипторов для отдельного сервиса
- Увеличение максимального количества открытых файлов для Nginx и Apache
- Лимиты file-max для текущей сессии
- linux-notes.org
- Увеличить Max Open File Limit в Unix/Linux
- Увеличить Max Open File Limit в Linux
- Увеличить Max Open File Limit в Mac OS X
- Увеличюем nginx worker_rlimit_nofile в nginx ( на уровне Nginx)
- Включение ограничений на основе PAM в Unix/Lixux
- 3 thoughts on “ Увеличить Max Open File Limit в Unix/Linux ”
- Добавить комментарий Отменить ответ
Лимиты на число одновременно открытых дескрипторов файлов
Приветствую уважаемых экспертов!
Задался вопросом, а сколько Linux (с ядром 3.2) может позволить мне держать открытыми файлов? Например, если я много дергаю текстовых файлов на чтение в PHP-скриптах.
Ограничения есть, но вот какие? И как их посмотреть, или даже поменять? Эти ограничения откносятся к одной ФС или действуют на систему в целом?
Например дома на Ubuntu:
Про ключ -n написано:
The maximum number of open file descriptors (most systems do not allow this value to be set)
А тут (эта же система):
Что это за показатели? И к чему они относятся?
Или может есть другие способы посмотреть?
Насколько я понял, ulimit показывает максимальное число открытых дескрипторов файлов на процесс, а
Допустим есть Apache + PHP (модулем). При обслуживании web-сайта какое ограничение будет действовать? В PHP-скриптах идет обращение к БД «на файлах». Неужели 1024 дескрипторов на весь Apache?
первое — лимит, устанавливаемый шеллом с пом. pam
второе — устанавливаемый ядром
ответы на твои вопросы есть, внезапно, в релевантных манах/доках
Дополнил вопрос в теме.
Файлы надо закрывать сразу после обращения в таком случае. Собственно для того всякие блоки типа with-open-file в общелиспе и придуманы. Ну или with . as . в питоне.
В коде вижу обращения к функции file_get_contents(). Они вычитывают из мелких файликов (в пределах килобайта) хранимые объекты. В процессе открытия одной страницы читается до 30 файлов (чаще до 10). Сам сайт дает около полумиллиона генераций страниц в сутки. Правда пока пиковые нагрузки никто не считал.
Так чтобы открыть fopen(), а потом что-то с ним долго делать пока не обнаружил.
Вообще именно чтобы с таким вот не геммороится, и придумали базы данных. И да, а нафига при открытии каждой страницы оно перечитывает, нельзя что ли кеш держать в памяти веб-приложения? Или php каждый раз заново перезапускается?
Вообще именно чтобы с таким вот не геммороится, и придумали базы данных.
БД вещь хорошая, но сайтов на маломощном сервачке несколько. И там где в основе БД, прослеживаются тормоза (звучит страшнее чем на самом деле). Вызывают нарекания всякие вложенности, джойны и прочие вкусности.
И да, а нафига при открытии каждой страницы оно перечитывает, нельзя что ли кеш держать в памяти веб-приложения?
Файлов много, и количество обращений (пофайловых) более-менее равномерно. Вот если бы какие-то чаще других читались. Да и памяти всего 600 Мб.
Или php каждый раз заново перезапускается?
Да. Приложения работающего постоянно нет.
там где в основе БД, прослеживаются тормоза
так ты фактически и реализуешь ту же БД, только с файлами и костылями. и при достижении того же уровня функционала тормоза будут те же.
Неужели 1024 дескрипторов на весь Apache?
Да. Но на каждый весь: ps ax|grep httpd
так ты фактически и реализуешь ту же БД
Согласен. Файлы и РБД не должны сильно отличаться по скоростям (мне так кажется). При условии проектирования структуры таблиц в РБД не по академическим правилам, а в привязке к предметной области и специфике их отображения.
А то обычно во всяких (да в любых) CMS генерация главной страницы характерна выполнением нескольких десятков SQL-запросов. И не все они простые линейные SELECT`ы.
Впрочем на сайтике ООП и данные запрашиваются через мапперы, не составит труда сменить слой хранения.
Да. Но на каждый весь: ps ax|grep httpd
Вот это уже радует.
man, в этом месте, не очень вразумительный. Не сразу понятно, точнее, вообще непонятно. Но оно так.
При условии проектирования структуры таблиц в РБД не по академическим правилам, а в привязке к предметной области и специфике их отображения.
Источник
Максимально допустимо число открытых файлов в 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
#* 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
Источник
Исправляем ошибку “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 соответственно.
Можно! Что-то делаете не так. Я выложил скриншот в статье и показал что можно все сделать.
Мужикам на картинке к статье явно не повезло.
Свет приглушён, явно видно зелёный оттенок табличек аварийного освещения — либо дело за полночь, либо у них блекаут и работают от дизеля.
Сидят за консолью. По сети, оно, похоже, уже не отвечает. Плохо дело.
Стул притащили. Значит, давно не отвечает. Надо было прописать MAX OPEN FILE LIMIT заранее, а не когда уже навернулось.
Добавить комментарий Отменить ответ
Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.
Источник