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@82066 13f79535-47bb-0310-9956-ffa450edef68
176 lines
5.5 KiB
HTML
176 lines
5.5 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
|
|
<HTML>
|
|
<HEAD>
|
|
<TITLE>Hints on Running a High-Performance Web Server</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">Hints on Running a High-Performance Web Server</H1>
|
|
|
|
Running Apache on a heavily loaded web server, one often encounters
|
|
problems related to the machine and OS configuration. "Heavy" is
|
|
relative, of course - but if you are seeing more than a couple hits
|
|
per second on a sustained basis you should consult the pointers on
|
|
this page. In general the suggestions involve how to tune your kernel
|
|
for the heavier TCP load, hardware/software conflicts that arise, <EM>etc.</EM>
|
|
|
|
<UL>
|
|
<LI><A HREF="#AUX">A/UX (Apple's UNIX)</A>
|
|
<LI><A HREF="#BSD">BSD-based (BSDI, FreeBSD, etc)</A>
|
|
<LI><A HREF="#DEC">Digital UNIX</A>
|
|
<LI><A HREF="perf-hp.html">HPUX</A>
|
|
<LI><A HREF="#Linux">Linux</A>
|
|
<LI><A HREF="#Solaris">Solaris</A>
|
|
<LI><A HREF="#SunOS">SunOS 4.x</A>
|
|
<LI><A HREF="#SVR4">SVR4</A>
|
|
</UL>
|
|
|
|
<HR>
|
|
|
|
<H3><A NAME="AUX">
|
|
A/UX (Apple's UNIX)
|
|
</A></H3>
|
|
|
|
If you are running Apache on A/UX, a page that gives some helpful
|
|
performance hints (concerning the <EM>listen()</EM> queue and using
|
|
virtual hosts)
|
|
<A HREF="http://www.jaguNET.com/apache.html">can be found here</A>
|
|
|
|
<P><HR>
|
|
|
|
<H3><A NAME="BSD">
|
|
BSD-based (BSDI, FreeBSD, etc)
|
|
</A></H3>
|
|
|
|
<A HREF="perf-bsd44.html#initial">Quick</A> and
|
|
<A HREF="perf-bsd44.html#detail">detailed</A>
|
|
performance tuning hints for BSD-derived systems.
|
|
|
|
<P><HR>
|
|
|
|
<H3><A NAME="DEC">
|
|
Digital UNIX
|
|
</A></H3>
|
|
|
|
<UL>
|
|
<LI><A
|
|
HREF="http://www.digital.com/info/internet/document/ias/tuning.html"
|
|
>DIGITAL UNIX Tuning Parameters for Web Servers</A>
|
|
<LI>We have some <A HREF="perf-dec.html">newsgroup postings</A> on how
|
|
to tune Digital UNIX 3.2 and 4.0.
|
|
</UL>
|
|
|
|
<P><HR>
|
|
|
|
<H3><A NAME="Linux">
|
|
Linux
|
|
</A></H3>
|
|
|
|
There are no known problems with heavily loaded systems running Linux
|
|
kernels 2.0.32 or later. Earlier kernels have some problems, and an
|
|
upgrade to the latest 2.0.x is a good idea to eliminate various security
|
|
and denial of service attacks.
|
|
|
|
<P><HR>
|
|
|
|
<H3><A NAME="Solaris">
|
|
Solaris 2.4
|
|
</A></H3>
|
|
|
|
The Solaris 2.4 TCP implementation has a few inherent limitations that
|
|
only became apparent under heavy loads. This has been fixed to some
|
|
extent in 2.5 (and completely revamped in 2.6), but for now consult
|
|
the following URL for tips on how to expand the capabilities if you
|
|
are finding slowdowns and lags are hurting performance.
|
|
|
|
<P>
|
|
|
|
Other links:
|
|
|
|
<UL>
|
|
|
|
<LI><A HREF="http://www.sun.com/sun-on-net/performance.html">
|
|
World Wide Web Server Performance,
|
|
<http://www.sun.com/sun-on-net/performance.html></A>
|
|
<LI><A HREF="http://www.rvs.uni-hannover.de/people/voeckler/tune/EN/tune.html">
|
|
Solaris 2.x - tuning your TCP/IP stack</A> contains some good technical
|
|
information about tuning various Solaris TCP/IP parameters.
|
|
</UL>
|
|
|
|
<P><HR>
|
|
|
|
<H3><A NAME="SunOS">
|
|
SunOS 4.x
|
|
</A></H3>
|
|
|
|
More information on tuning SOMAXCONN on SunOS can be found at
|
|
<A HREF="http://www.islandnet.com/~mark/somaxconn.html">
|
|
http://www.islandnet.com/~mark/somaxconn.html</A>.
|
|
|
|
<P><HR>
|
|
|
|
<H3><A NAME="SVR4">
|
|
SVR4
|
|
</A></H3>
|
|
|
|
Some SVR4 versions waste three system calls on every
|
|
<SAMP>gettimeofday()</SAMP> call. Depending on the syntactic
|
|
form of the <SAMP>TZ</SAMP> environment variable, these
|
|
systems have several different algorithms to determine the
|
|
local time zone (presumably <EM>compatible</EM> with
|
|
something). The following example uses the central european
|
|
time zone to demonstrate this:
|
|
<DL>
|
|
<DT><STRONG>TZ=:MET</STRONG>
|
|
<DD>This form delegates the knowledge of the time zone
|
|
information to an external compiled zoneinfo file
|
|
(à la BSD).<BR>
|
|
<STRONG>Caveat:</STRONG> Each time the gettimeofday()
|
|
function is called, the external zone info is read in
|
|
again (at least on some SVR4 systems). That results in
|
|
three wasted system calls with every apache request
|
|
served.<PRE>
|
|
open("/usr/lib/locale/TZ/MET", O_RDONLY) = 3
|
|
read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 7944) = 778
|
|
close(3) = 0</PRE>
|
|
|
|
<DT><STRONG>TZ=MET-1MDT,M3.5.0/02:00:00,M10.5.0/03:00:00</STRONG>
|
|
<DD>This syntax form (à la SYSV) contains all the
|
|
knowledge about time zone beginning and ending times in
|
|
its external representation. It has to be parsed each
|
|
time it is evaluated, resulting in a slight computing
|
|
overhead, but it requires no system call. Though the
|
|
table lookup à la BSD is the more sophisticated
|
|
technical solution, the bad SVR4 implementation makes
|
|
this the preferred syntax on systems which otherwise
|
|
access the external zone info file repeatedly.
|
|
</DL>
|
|
You should use the <SAMP>truss</SAMP> utility on a
|
|
single-process apache server (started with the <SAMP>-X</SAMP>
|
|
debugging switch) to determine whether your system can profit
|
|
from the second form of the <SAMP>TZ</SAMP> environment
|
|
variable. If it does, you could integrate the setting of the
|
|
preferred <SAMP>TZ</SAMP> syntax into the httpd startup
|
|
script, which is usually simply a copy of (or symbolic link
|
|
to) the <SAMP>apachectl</SAMP> utility script, or into the
|
|
system's <SAMP>/etc/TIMEZONE</SAMP> script.
|
|
|
|
<P><HR>
|
|
|
|
<H3>More welcome!</H3>
|
|
|
|
If you have tips to contribute, send mail to <A
|
|
HREF="mailto:apache@apache.org">apache@apache.org</A>
|
|
|
|
<!--#include virtual="footer.html" -->
|
|
</BODY></HTML>
|
|
|