Apache. Документация на русском


Разделы:   1    2      3      4    5    6    7    8    9    10    11    12    13    14    15    16  

Раздел 3. Документация по виртуальному хосту Apache

Пункты:   28    29    30    31    32      33    

 <         > 
  RU            EN  

Пункт 33. Ограничения дескриптора файла

При использовании большого количества виртуальных хостов Apache может исчерпать доступные файловые дескрипторы (иногда называемые файловыми дескрипторами ), если каждый виртуальный хост указывает разные файлы журналов. Общее количество файловых дескрипторов, используемых Apache, равно одному для каждого отдельного файла журнала ошибок, по одному для каждой другой директивы файла журнала плюс 10-20 для внутреннего использования. Операционные системы Unix ограничивают количество файловых дескрипторов, которые могут использоваться процессом; предел обычно составляет 64 и обычно может быть увеличен до большого жесткого предела.

Хотя Apache пытается увеличить лимит по мере необходимости, это может не сработать, если:

  1. Ваша система не поддерживает setrlimit() системный вызов.
  2. Вызов setrlimit(RLIMIT_NOFILE) не работает в вашей системе (например, Solaris 2.3)
  3. Количество требуемых файловых дескрипторов превышает жесткий предел.
  4. Ваша система налагает другие ограничения на файловые дескрипторы, такие как ограничение на потоки stdio только с использованием файловых дескрипторов ниже 256. (Solaris 2)

В случае возникновения проблем вы можете:

  • Уменьшить количество лог-файлов; не указывайте лог-файлы в <VirtualHost> разделах, а логируйте только в основные лог-файлы. (Дополнительную информацию об этом см. в разделе Разделение файлов журнала ниже.)
  • Если ваша система попадает в категорию 1 или 2 (см. выше), увеличьте лимит файловых дескрипторов перед запуском Apache, используя скрипт наподобие

    #!/bin/sh
    ulimit -S -n 100
    exec httpd

Разделение файлов журнала

Если вы хотите записывать несколько виртуальных хостов в один и тот же файл журнала, вы можете впоследствии разделить файлы журнала, чтобы выполнить статистический анализ различных виртуальных хостов. Это может быть выполнено следующим образом.

Во-первых, вам нужно будет добавить информацию о виртуальном хосте в записи журнала. Это можно сделать с помощью LogFormat директивы и %v переменной. Добавьте это в начало строки формата журнала:

 LogFormat "%v %h %l %u %t \"%r\" %>s %b" vhost
Журналы CustomLog/multiple_vhost_log vhost 

Это создаст файл журнала в общем формате журнала, но с каноническим виртуальным хостом (независимо от того, что указано в директиве ServerName ) перед каждой строкой. ( mod_log_config Дополнительную информацию о настройке файлов журналов см. в статье.)

Если вы хотите разделить файл журнала на составные части (по одному файлу на виртуальный хост), вы можете использовать split-logfile для этого программу. Вы найдете эту программу в support каталоге дистрибутива Apache.

Запустите эту программу командой:

split-logfile < /logs/multiple_vhost_log

Эта программа при запуске с именем вашего файла журнала виртуального хоста будет генерировать один файл для каждого виртуального хоста, который появляется в вашем файле журнала. Каждый файл будет называться hostname.log .



 <         > 

Пункты:   28    29    30    31    32      33    

Рейтинг@Mail.ru