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


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

Раздел 10. Модули Апача

Пункты:   85    86    88    89    90    91    92    93    94    95    96    97    98    99    100    101    102    103    104    105    106    107    108    109    110    111    112    113    114    115    116    117    118    119    120    121    122    123    124    125    126    127    128    129    130    131    132    133    134    135    136    137    138    139    140    141      142      143    144    145    146    147    148    149    150    151    152    153    154    155    156    157    158    159    160    161    163    164    165    166    167    168    170    171    172    173    174    175    176    177    178    179    180    181    182    183    184    185    186    187    188    189    190    191    192    193    194    195    196    197    198    199    200    201    203    204    205    206    207    208    209    210    211    212    213  

 <         > 
  RU            EN  

Пункт 142. Модуль Apache mod_file_cache

Кэширование часто запрашиваемых файлов, которые изменяются очень редко, — это метод снижения нагрузки на сервер. mod_file_cache предоставляет два метода кэширования часто запрашиваемых статических файлов. С помощью директив конфигурации вы можете mod_file_cache либо открыть mmap() файл, либо предварительно открыть файл и сохранить дескриптор открытого файла . Оба метода снижают нагрузку на сервер при обработке запросов на эти файлы, выполняя часть работы (в частности, файловый ввод-вывод) для обслуживания файла при запуске сервера, а не при каждом запросе.

Примечание. Вы не можете использовать это для ускорения программ CGI или других файлов, которые обслуживаются специальными обработчиками содержимого. Его можно использовать только для обычных файлов, которые обычно обслуживаются основным обработчиком содержимого Apache.

Этот модуль является расширением и в значительной степени заимствован из mod_mmap_static модуля в Apache 1.3.

Использование mod_file_cache

mod_file_cache кэширует список статически сконфигурированных файлов через MMapFile или CacheFile директивы в основной конфигурации сервера.

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

Директива MMapFile

Директива MMapFile отображает mod_file_cache список статически сконфигурированных файлов в память через системный вызов mmap() . Этот системный вызов доступен в большинстве современных производных Unix, но не во всех. Иногда существуют системные ограничения на размер и количество файлов, которые можно mmap() редактировать, экспериментирование, вероятно, является самым простым способом выяснить это.

Это mmap() делается один раз при запуске или перезапуске сервера. Таким образом, всякий раз, когда один из отображаемых файлов изменяется в файловой системе, вам необходимо перезапустить сервер (см. документацию по остановке и перезапуску). Повторим этот момент: если файлы будут изменены на месте без перезапуска сервера, вы можете в конечном итоге обслуживать запросы, которые являются полностью фиктивными. Вы должны обновить файлы, отсоединив старую копию и поместив новую копию на место. Большинство инструментов, таких как rdist и mv делают это. Причина, по которой эти модули не заботятся об изменениях в файлах, заключается в том, что эта проверка потребует дополнительной проверки stat() каждый раз, что является пустой тратой и противоречит цели сокращения ввода-вывода.

Директива CacheFile

Директива CacheFile открывает mod_file_cache активный дескриптор или дескриптор файла для файла (или файлов), перечисленных в директиве конфигурации, и помещает эти дескрипторы открытых файлов в кэш. Когда файл запрашивается, сервер извлекает дескриптор из кеша и передает его API-интерфейсу сокета sendfile() (или TransmitFile() в Windows).

Кэширование дескриптора файла выполняется только один раз при запуске или перезапуске сервера. Поэтому всякий раз, когда один из кэшированных файлов изменяется в файловой системе, вам необходимо перезапустить сервер (см. документацию по остановке и перезапуску). Повторим этот момент: если файлы будут изменены на месте без перезапуска сервера, вы можете в конечном итоге обслуживать запросы, которые являются полностью фиктивными. Вы должны обновить файлы, отсоединив старую копию и поместив новую копию на место. Большинство инструментов, таких как rdist и mv делают это.

Примечание

Не беспокойтесь о директиве, которая рекурсивно кэширует все файлы в каталоге. Попробуйте вместо этого... См. Include директиву и рассмотрите эту команду:

find /www/htdocs -type f -print \
| sed -e 's/.*/mmapfile &/' > /www/conf/mmap.conf



Директива CacheFile

Описание:Кэшировать список дескрипторов файлов во время запуска
Синтаксис: CacheFile file-path [file-path] ...
Контекст:конфигурация сервера
Положение дел:Экспериментальный
Модуль:mod_file_cache

Директива CacheFile открывает дескрипторы одного или нескольких файлов (указаны как аргументы, разделенные пробелами) и помещает эти дескрипторы в кэш во время запуска сервера. Дескрипторы кэшированных файлов автоматически закрываются при выключении сервера. Когда файлы изменились в файловой системе, необходимо перезапустить сервер, чтобы повторно кэшировать их.

Будьте осторожны с аргументами пути к файлу : они должны буквально совпадать с путем файловой системы, создаваемым обработчиками преобразования URL-адреса в имя файла Apache. Мы не можем сравнивать индексные дескрипторы или другие вещи для сопоставления путей через символические ссылки и т. д. , потому что это опять-таки будет стоить дополнительных stat() системных вызовов, что неприемлемо. Этот модуль может работать или не работать с именами файлов, переписанными с помощью mod_alias или mod_rewrite .

Пример

 Кэш-файл /usr/local/apache/htdocs/index.html 


Директива MMapFile

Описание:Сопоставьте список файлов в памяти во время запуска
Синтаксис: MMapFile file-path [file-path] ...
Контекст:конфигурация сервера
Положение дел:Экспериментальный
Модуль:mod_file_cache

Директива MMapFile отображает один или несколько файлов (указанных как аргументы, разделенные пробелами) в память во время запуска сервера. Они автоматически отключаются при выключении сервера. Когда файлы были изменены в файловой системе, по крайней мере, сигнал HUP или USR1 должен быть отправлен на сервер, чтобы восстановить mmap() их.

Будьте осторожны с аргументами пути к файлу : они должны буквально совпадать с путем файловой системы, создаваемым обработчиками преобразования URL-адреса в имя файла Apache. Мы не можем сравнивать индексные дескрипторы или другие вещи для сопоставления путей через символические ссылки и т. д. , потому что это опять-таки будет стоить дополнительных stat() системных вызовов, что неприемлемо. Этот модуль может работать или не работать с именами файлов, переписанными с помощью mod_alias или mod_rewrite .

Пример

 MMapFile /usr/local/apache/htdocs/index.html 


 <         > 

Пункты:   85    86    88    89    90    91    92    93    94    95    96    97    98    99    100    101    102    103    104    105    106    107    108    109    110    111    112    113    114    115    116    117    118    119    120    121    122    123    124    125    126    127    128    129    130    131    132    133    134    135    136    137    138    139    140    141      142      143    144    145    146    147    148    149    150    151    152    153    154    155    156    157    158    159    160    161    163    164    165    166    167    168    170    171    172    173    174    175    176    177    178    179    180    181    182    183    184    185    186    187    188    189    190    191    192    193    194    195    196    197    198    199    200    201    203    204    205    206    207    208    209    210    211    212    213  

Рейтинг@Mail.ru