Hints on Running a High-Performance Web Server

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, etc.

Solaris 2.4

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.

http://www.sun.com/cgi-bin/show?sun-on-net/Sun.Internet.Solutions/performance/index.html


Linux

The most common problem on Linux shows up on heavily-loaded systems where the whole server will appear to freeze for a couple of minutes at a time, and then come back to life. This has been traced to a listen() queue overload - certain Linux implementations have a low value set for the incoming connection queue which can cause problems. Please see our Using Apache on Linux page for more info on how to fix this.


BSD-based (BSDI, FreeBSD, etc)

Like other OS's, the listen queue is often the first limit hit. The following are comments from "Aaron Gifford <agifford@InfoWest.COM>" on how to fix this on BSDI 1.1 and FreeBSD 2.0:

Edit the following two files:

/usr/include/sys/socket.h
/usr/src/sys/sys/socket.h
In each file, look for the following:
    /*
     * Maximum queue length specifiable by listen.
     */
    #define SOMAXCONN       5
Just change the "5" to whatever appears to work. I bumped the two machines I was having problems with up to 30 and haven't noticed the problem since. After the edit, recompile the kernel and recompile the Apache server then reboot.


More coming soon!

If you have tips to contribute, send mail to brian@organic.com


Home Index