Назад | Перейти на главную страницу

Настройка файловых дескрипторов в /etc/sysctl.conf

Недавно я узнал, что возможность увеличения количества виртуальных хостов, которые мы можем обслуживать через Apache, зависит от файловых дескрипторов.

они говорят, что значение нужно добавить в /etc/sysctl.conf как

fs.file-max = 65536

Какое соотношение между объемом оперативной памяти и указанным выше числом?

Подскажите как;

«У вас должно быть X ГБ ОЗУ и процессор с частотой Y ГГц, чтобы можно было установить для fs.file-max значение Z»

Я в основном хочу знать отношения X - Y - Z, чтобы иметь возможность настраивать параметры.

Сервер - это Ubuntu 8.04, и я могу увеличить ОЗУ или ЦП практически до любого числа через своего поставщика облачных серверов.

ps: или почему я должен об этом заботиться? Есть ли способ настроить мою систему так, чтобы она служила так, как мне позволяет память?

это руководство (официальный документ plesk)


  1. Добавьте следующую строку в /etc/sysctl.conf:

    $ fs.file-max = 65536
    
  2. Выполните следующую команду оболочки:

    $ /sbin/sysctl -w fs.file-max=65536
    

    Обратите внимание, что значение fs.file-max может быть равным 220 = 1048576).

  3. Добавьте следующую строку в начало /etc/init.d/apache2 и / usr / sbin / apache2ctl:

    $ ulimit -n `cat /proc/sys/fs/file-max`
    
  4. Измените значение __FD_SETSIZE в файлах /usr/include/bits/typesizes.h и /usr/include/nptl/bits/typesizes.h. Должно получиться так:

    $ define __FD_SETSIZE 65536
    
  5. Загрузите и пересоберите пакеты:

    $ apt-get install apt-src
    $ apt-src --build install openssl
    $ dpkg -i libssl*.deb openssl*.deb
    $ apt-src --build install apache2
    $ dpkg -i libapr*.deb apache2_*.deb apache2-common*.deb apache2-mpm-prefork*.deb apache2-utils*.deb
    $ cp /opt/psa/suexec/psa-suexec2 /usr/lib/apache2/suexec2
    /etc/init.d/apache2 restart
    $ apt-src --build install libc-client2002edebian
    $ dpkg -i libc-client-dev_2002edebian1-*.deb libc-client2002edebian*.deb
    mlock*.deb
    $ apt-src --build install php4
    $ dpkg -i `ls *deb|grep php4|grep -v apache-mod`
    

Я был бы удивлен, если бы в вашей установке Ubuntu по умолчанию не было более 65536 доступных. Проверьте текущую настройку с помощью

$ sudo sysctl fs.file-max

Общее практическое правило заключается в том, что вы можете увеличить fs.file-max параметр на 64 для каждого 1 МБ ОЗУ.

e.g. 2 gigabytes = 2048 * 1MB
                 = 2048 * 64
                 = 131072

Это двойной 65536. Я бы не стал использовать это, если вы на самом деле необходимость использовать его, потому что в некоторых случаях это может снизить вашу производительность. Не менее важным, чем настройка sysctl, является __FD_SETSIZE, потому что это то, что используют ваши приложения, когда они используют систему. select(2) вызов.

Мой совет в целом заключается в том, что> 1000 VirtualHosts на одном экземпляре Apcahe - это слишком большой кошмар для управления на одной машине. Один скомпрометированный хост, любое время простоя и т. Д., И у вас есть еще много сайтов, кричащих на вас.

Я проработал в веб-хостинге более 7 лет, и мой совет - купить другую машину по многим причинам: производительность - одна из них, простота обслуживания - другая, все ваши яйца в одной корзине - это другая и т. Д. И т. Д.