Slyweb
На разработку сайта! Скидки 50%!

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

jQuery и CSS

Правильная настройка максимального занчения одновременно открытых файлов может оказать существенное воздействие на правильную работу скриптов и процессов Linux системы. В большинстве случаев, это избавляет Вас от сообщений вида "Too many open files...", что переводится как "открыто слишком много файлов...".

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

  • Код
  • Чистый код
  • Копировать в буфер
  1.ulimit -n

        

Данное значение устанавливает максимально возможно количество одновременно открываемых файлов для обычных пользователей (не root) для одной сессии. Для старых версий Centos данное значение при его изменении могло оставаться равным 1024 для пользователя root, изменения касались только обычных пользователей.

Для изменения данного параметра необходимо сделать два изменения системных настроек.

Первое

Изменить значение файла /proc/sys/fs/file-max. Просмотреть текущее значение можно командой:

  • Код
  • Чистый код
  • Копировать в буфер
  1.# cat /proc/sys/fs/file-max

        

Если указанное значение не достаточно велико увеличьте его с помощью команд echo с последующей реавторизацией.

  • Код
  • Чистый код
  • Копировать в буфер
  1.# echo 2048 > /proc/sys/fs/file-max

        

Далее задайте параметр файла откройте

  • Код
  • Чистый код
  • Копировать в буфер
  1.vi /etc/sysctl.conf

        

и измените параметр fs.file-max

  • Код
  • Чистый код
  • Копировать в буфер
  1.fs.file-max = 999999

        

Для сохранения настроек используйте команду:

  • Код
  • Чистый код
  • Копировать в буфер
  1./sbin/sysctl -p

        

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

Добавив в конец файла следующую запись:

  • Код
  • Чистый код
  • Копировать в буфер
  1.* - nofile 2048

        

Параметр "-" означает применение лимитов для «hard and soft». Параметр hard не может быть выше soft. Параметр soft может быть превышаться пользователями.

Не забудьте выйти и войти заново.

Для того чтобы проверить что всё правильно зайдите под нужным пользователем, например:

  • Код
  • Чистый код
  • Копировать в буфер
  1.su apache -s /bin/sh
  2.ulimit -a

        
  • Код
  • Чистый код
  • Копировать в буфер
  1.core file size (blocks, -c) 0
  2.data seg size (kbytes, -d) unlimited
  3.scheduling priority (-e) 0
  4.file size (blocks, -f) unlimited
  5.pending signals (-i) 80064
  6.max locked memory (kbytes, -l) 32
  7.max memory size (kbytes, -m) unlimited
  8.open files (-n) 999999
  9.pipe size (512 bytes, -p) 8
10.POSIX message queues (bytes, -q) 819200
11.real-time priority (-r) 0
12.stack size (kbytes, -s) 10240
13.cpu time (seconds, -t) unlimited
14.max user processes (-u) 80064
15.virtual memory (kbytes, -v) unlimited
16.file locks (-x) unlimited

        

Да и чуть не забыл для mysql, возможно, нужно будет использовать дополнительно параметр "open_files_limit". Выполните SQL запрос:

  • Код
  • Чистый код
  • Копировать в буфер
  1.show variables like 'open_files_limit';

        

Этот параметр нужно добавить в /etc/my.cnf.


Александр Ермаков