mirror of
https://github.com/apache/httpd.git
synced 2025-05-17 15:21:13 +03:00
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@87273 13f79535-47bb-0310-9956-ffa450edef68
153 lines
4.9 KiB
HTML
153 lines
4.9 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
|
|
<HTML>
|
|
<HEAD>
|
|
<TITLE>Apache module mod_mmap_static</TITLE>
|
|
</HEAD>
|
|
<!-- Background white, links blue (unvisited), navy (visited), red (active) -->
|
|
<BODY
|
|
BGCOLOR="#FFFFFF"
|
|
TEXT="#000000"
|
|
LINK="#0000FF"
|
|
VLINK="#000080"
|
|
ALINK="#FF0000"
|
|
>
|
|
<!--#include virtual="header.html" -->
|
|
<H1 ALIGN="CENTER">Module mod_mmap_static</H1>
|
|
|
|
<P>
|
|
This module provides mmap()ing of a statically configured list
|
|
of frequently requested but not changed files.
|
|
|
|
<P><A
|
|
HREF="module-dict.html#Status"
|
|
REL="Help"
|
|
><STRONG>Status:</STRONG></A> Experimental
|
|
<BR>
|
|
<A
|
|
HREF="module-dict.html#SourceFile"
|
|
REL="Help"
|
|
><STRONG>Source File:</STRONG></A> mod_mmap_static.c
|
|
<BR>
|
|
<A
|
|
HREF="module-dict.html#ModuleIdentifier"
|
|
REL="Help"
|
|
><STRONG>Module Identifier:</STRONG></A> mmap_static_module
|
|
</P>
|
|
|
|
<H2>Summary</H2>
|
|
<P>
|
|
This is an <STRONG>experimental</STRONG> module and should be used with
|
|
care. You can easily create a broken site using this module, read this
|
|
document carefully.
|
|
<CODE>mod_mmap_static</CODE> maps a list of statically configured files (via
|
|
<CODE>MMapFile</CODE> directives in the main server configuration) into
|
|
memory through the system call <CODE>mmap()</CODE>. This system
|
|
call is available on most modern Unix derivates, but not on all. There
|
|
are sometimes system-specific limits on the size and number of files that
|
|
can be mmap()d, experimentation is probably the easiest way to find out.
|
|
</P>
|
|
<P>
|
|
This mmap()ing is done once at server start or restart, only. So whenever
|
|
one of the mapped files changes on the filesystem you <EM>have</EM> to
|
|
restart the server by at least sending it a HUP or USR1 signal (see the
|
|
<A HREF="../stopping.html">Stopping and Restarting</A> documentation). To
|
|
reiterate that point: if the files are modified <EM>in place</EM> without
|
|
restarting the server you may end up serving requests that are completely
|
|
bogus. You should update files by unlinking the old copy and putting a new
|
|
copy in place. Most tools such as <CODE>rdist</CODE> and <CODE>mv</CODE> do
|
|
this. The reason why this modules doesn't take care of changes to the files
|
|
is that this check would need an extra <CODE>stat()</CODE> every time which
|
|
is a waste and against the intent of I/O reduction.
|
|
</P>
|
|
|
|
<H2>Directives</H2>
|
|
<UL>
|
|
<LI><A HREF="#mmapfile">MMapFile</A>
|
|
</LI>
|
|
</UL>
|
|
|
|
<HR>
|
|
|
|
<H2><A NAME="mmapfile">MMapFile</A> directive</H2>
|
|
<P>
|
|
<A
|
|
HREF="directive-dict.html#Syntax"
|
|
REL="Help"
|
|
><STRONG>Syntax:</STRONG></A> MMapFile <EM>filename</em>
|
|
[<em>filename</em>] ...
|
|
<BR>
|
|
<A
|
|
HREF="directive-dict.html#Default"
|
|
REL="Help"
|
|
><STRONG>Default:</STRONG></A> <EM>None</EM>
|
|
<BR>
|
|
<A
|
|
HREF="directive-dict.html#Context"
|
|
REL="Help"
|
|
><STRONG>Context:</STRONG></A> server-config
|
|
<BR>
|
|
<A
|
|
HREF="directive-dict.html#Override"
|
|
REL="Help"
|
|
><STRONG>Override:</STRONG></A> <EM>Not applicable</EM>
|
|
<BR>
|
|
<A
|
|
HREF="directive-dict.html#Status"
|
|
REL="Help"
|
|
><STRONG>Status:</STRONG></A> Experimental
|
|
<BR>
|
|
<A
|
|
HREF="directive-dict.html#Module"
|
|
REL="Help"
|
|
><STRONG>Module:</STRONG></A> mod_mmap_static
|
|
<BR>
|
|
<A
|
|
HREF="directive-dict.html#Compatibility"
|
|
REL="Help"
|
|
><STRONG>Compatibility:</STRONG></A> Only available in Apache 1.3 or later
|
|
|
|
<P>
|
|
The <CODE>MMapFile</CODE> directive maps one or more files (given as
|
|
whitespace separated arguments) into memory at server startup time. They
|
|
are automatically unmapped on a server shutdown. When the files have changed
|
|
on the filesystem at least a HUP or USR1 signal should be send to the server
|
|
to re-mmap them.
|
|
</P>
|
|
|
|
<P>
|
|
Be careful with the <EM>filename</EM> arguments: They have to literally
|
|
match the filesystem path Apache's URL-to-filename translation handlers
|
|
create. We cannot compare inodes or other stuff to match paths through
|
|
symbolic links <EM>etc.</EM> because that again would cost extra <CODE>stat()</CODE>
|
|
system calls which is not acceptable. This module may or may not work
|
|
with filenames rewritten by <CODE>mod_alias</CODE> or
|
|
<CODE>mod_rewrite</CODE>... it is an experiment after all.
|
|
</P>
|
|
|
|
<P>
|
|
Notice: You cannot use this for speeding up CGI programs or other files
|
|
which are served by special content handlers. It can only be used for
|
|
regular files which are usually served by the Apache core content handler.
|
|
</P>
|
|
|
|
Example:
|
|
|
|
<PRE>
|
|
MMapFile /usr/local/apache/htdocs/index.html
|
|
</PRE>
|
|
|
|
<P>
|
|
<STRONG>Note</STRONG>: don't bother asking for a for a <CODE>MMapDir</CODE>
|
|
directive which
|
|
recursively maps all the files in a directory. Use Unix the way it was
|
|
meant to be used. For example, see the
|
|
<A HREF="core.html#include">Include</A> directive, and consider this command:
|
|
<PRE>
|
|
find /www/htdocs -type f -print \
|
|
| sed -e 's/.*/mmapfile &/' > /www/conf/mmap.conf
|
|
</PRE>
|
|
|
|
<!--#include virtual="footer.html" -->
|
|
</BODY>
|
|
</HTML>
|