Під час запуску програми я інколи отримую помилку 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. Для цього не потрібно перезавантажити сервер.