<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE manualpage SYSTEM "../style/manualpage.dtd">
<?xml-stylesheet type="text/xsl" href="../style/manual.en.xsl"?>
<!-- $Revision: 1.11 $ -->

<!--
 Copyright 2002-2004 The Apache Software Foundation

 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
 You may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.
-->

<manualpage metafile="fd-limits.xml.meta">
<parentdocument href="./">Virtual Hosts</parentdocument>
  <title>File Descriptor Limits</title>

<summary>

    <p>When using a large number of Virtual Hosts, Apache may run
    out of available file descriptors (sometimes called <cite>file
    handles</cite>) if each Virtual Host specifies different log
    files. The total number of file descriptors used by Apache is
    one for each distinct error log file, one for every other log
    file directive, plus 10-20 for internal use. Unix operating
    systems limit the number of file descriptors that may be used
    by a process; the limit is typically 64, and may usually be
    increased up to a large hard-limit.</p>

    <p>Although Apache attempts to increase the limit as required,
    this may not work if:</p>

    <ol>
      <li>Your system does not provide the <code>setrlimit()</code>
      system call.</li>

      <li>The <code>setrlimit(RLIMIT_NOFILE)</code> call does not
      function on your system (such as Solaris 2.3)</li>

      <li>The number of file descriptors required exceeds the hard
      limit.</li>
      
      <li>Your system imposes other limits on file descriptors,
      such as a limit on stdio streams only using file descriptors
      below 256. (Solaris 2)</li>
    </ol>

	<p>In the event of problems you can:</p>

    <ul>
      <li>Reduce the number of log files; don't specify log files
      in the <directive type="section" module="core">VirtualHost</directive>
      sections, but only log to the main log files. (See <a
      href="#splitlogs">Splitting up your log files</a>, below, for more
      information on doing this.)</li>

      <li>
        If you system falls into 1 or 2 (above), then increase the
        file descriptor limit before starting Apache, using a
        script like

        <example>
          <code>#!/bin/sh<br />
           ulimit -S -n 100<br />
           exec httpd</code>
        </example>
      </li>
    </ul>

</summary>

<section id="splitlogs"><title>Splitting up your log files</title>

<p>If you want to log multiple virtual hosts to the same log file, you
may want to split up the log files afterwards in order to run
statistical analysis of the various virtual hosts. This can be
accomplished in the following manner.</p>

<p>First, you will need to add the virtual host information to the log
entries. This can be done using the <directive module="mod_log_config">
LogFormat</directive>
directive, and the <code>%v</code> variable. Add this to the beginning
of your log format string:</p>

<example>
LogFormat "%v %h %l %u %t \"%r\" %&gt;s %b" vhost<br />
CustomLog logs/multiple_vhost_log vhost
</example>

<p>This will create a log file in the common log format, but with the
canonical virtual host (whatever appears in the
<directive module="core">ServerName</directive> directive) prepended to
each line. (See <directive
module="mod_log_config">Custom Log Formats</directive> for
more about customizing your log files.)</p>

<p>When you wish to split your log file into its component parts (one
file per virtual host) you can use the program <code><a
href="../programs/other.html">split-logfile</a></code> to accomplish
this. You'll find this program in the <code>support</code> directory
of the Apache distribution.</p>

<p>Run this program with the command:</p>

<example>
split-logfile &lt; /logs/multiple_vhost_log
</example>

<p>This program, when run with the name of your vhost log file, will
generate one file for each virtual host that appears in your log file.
Each file will be called <code>hostname.log</code>.</p>

</section>
</manualpage>

