Ця стаття , я думаю, стосується вашої проблеми.
В основному вам слід скористатися командою ulimit для збільшення доступних ресурсів.
Наприклад:
Використовуйте таку команду для відображення максимальної кількості дескрипторів відкритого файлу:
cat /proc/sys/fs/file-max
Щоб побачити жорсткі та м'які значення, видайте команду наступним чином:
# ulimit -Hn
# ulimit -Sn
Щоб побачити жорсткі та м'які значення для httpd або користувача oracle, видайте команду наступним чином:
# su - username
Щоб виправити кількість максимальних файлів, ви можете збільшити максимальну кількість відкритих файлів, встановивши нове значення в змінній ядра / proc / sys / fs / file-max наступним чином (вхід як корінь):
# sysctl -w fs.file-max=100000
Вище команда примушує обмежити 100000 файлів. Вам потрібно відредагувати /etc/sysctl.conf
файл і поставити наступний рядок, щоб після перезавантаження налаштування залишилося таким, як є. Для цього додайте конфігураційну директиву так:
fs.file-max = 100000
Збережіть і закрийте файл. Користувачам потрібно вийти та знову увійти, щоб зміни набрали чинності, або просто ввести таку команду:
# sysctl -p
Перевірте свої настройки командою:
# cat /proc/sys/fs/file-max
або:
# sysctl fs.file-max
Вищеописана процедура встановлює загальносистемні обмеження дескрипторів файлів (FD), однак ви можете обмежити httpd
(або будь-якого іншого користувача) користувача певними обмеженнями, відредагувавши /etc/security/limits.conf
файл шляхом редагування /etc/security/limits.conf
та встановити обмеження таким чином:
httpd soft nofile 4096
httpd hard nofile 10240
Потім перевірте їх:
# su - httpd
$ ulimit -Hn
$ ulimit -Sn
Якщо у вас є проблема в інших дистрибутивах Linux, перевірте /etc/pam.d/login
і переконайтеся, що ви pam_limits.so
активовані, наприклад
session required pam_limits.so