Під час запуску програми я інколи отримую помилку too many files open
.
Запуск ulimit -a
звітів, що ліміт становить 1024. Як я можу збільшити ліміт вище 1024?
Редагувати
ulimit -n 2048
результати в помилці дозволу.
Під час запуску програми я інколи отримую помилку too many files open
.
Запуск ulimit -a
звітів, що ліміт становить 1024. Як я можу збільшити ліміт вище 1024?
Редагувати
ulimit -n 2048
результати в помилці дозволу.
Відповіді:
Ви завжди можете спробувати робити ulimit -n 2048
. Це лише скине ліміт для вашої поточної оболонки, і вказане вами число не повинно перевищувати жорсткої межі
Кожна операційна система має різні налаштування жорсткого обмеження у файлі конфігурації. Наприклад, обмеження жорсткого відкритого файлу для Solaris можна встановити під час завантаження з / etc / system.
set rlim_fd_max = 166384
set rlim_fd_cur = 8192
Для OS X ці самі дані потрібно встановити в /etc/sysctl.conf.
kern.maxfilesperproc=166384
kern.maxfiles=8192
У Linux ці налаштування часто знаходяться в /etc/security/limits.conf.
Існує два види обмежень:
М'які межі може встановлювати будь-який користувач, тоді як жорсткі обмеження можуть змінюватися лише корінцем. Обмеження є властивістю процесу. Вони успадковуються, коли створюється дочірній процес, тому слід встановити загальносистемні обмеження під час ініціалізації системи в сценаріях init, а обмеження користувачів повинні бути встановлені під час входу користувача, наприклад, за допомогою pam_limits.
Часто за замовчуванням встановлюється машина, коли завантажується машина. Отже, незважаючи на те, що ви можете скинути ваш ulimit в окремій оболонці, ви можете виявити, що він перезавантажується до попереднього значення при перезавантаженні. Ви можете скопіювати ваші завантажувальні сценарії за існування команд без обмежень, якщо ви хочете змінити типові.
ulimit
. Ви повинні вказати, що ви використовуєте (наприклад, WSL, Cygwin).
Якщо ви користуєтесь Linux і ви отримали помилку дозволу, вам потрібно буде підняти дозволений ліміт у файлі /etc/limits.conf
або /etc/security/limits.conf
файлі (де файл знаходиться, залежить від вашого конкретного дистрибутива Linux).
Наприклад, щоб дозволити будь-кому на машині збільшити кількість відкритих файлів до 10000, додайте рядок у limits.conf
файл.
* hard nofile 10000
Потім вийдіть із системи та перейдіть на систему, і ви повинні мати можливість:
ulimit -n 10000
без помилки дозволу.
root
користувача. Ви повинні вказати, root hard nofile 10000
чи бажаєте ви скорегувати root
ліміт.
ulimit
і, нарешті, дізнався, що я ввійшов як root. Тому я продовжував бачити 1024 дюйма ulimit -a
. Я змінив wildcare і додав *
нутрощі limits.conf
. Зараз все добре, (я використовую клавіші ssh, не хвилюйтесь: P) - Дякую !!!
/etc/security/limits.d/
.
1) Додайте наступний рядок до /etc/security/limits.conf
webuser hard nofile 64000
потім увійдіть як веб-користувач
su - webuser
2) Відредагуйте наступні два файли для веб-користувача
додайте файли .bashrc та .bash_profile , запустивши
echo "ulimit -n 64000" >> .bashrc ; echo "ulimit -n 64000" >> .bash_profile
3) Вийдіть, а потім увійдіть і переконайтесь, що зміни були внесені правильно:
$ ulimit -a | grep open
open files (-n) 64000
Оце і вони бум, бум бум.
Якщо деякі з ваших служб перетворюються на ліміти, іноді простіше помістити відповідні команди в сценарій init-сервісу. Наприклад, коли Apache звітує
[сигнал] (11) Ресурс тимчасово недоступний: apr_thread_create: не вдається створити робочу нитку
Спробуйте поставити ulimit -s unlimited
в /etc/init.d/httpd
. Для цього не потрібно перезавантажити сервер.