| <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> |
| <HTML> |
| <HEAD> |
| <TITLE>Running a High-Performance Web Server on HPUX</TITLE> |
| </HEAD> |
| |
| <!-- Background white, links blue (unvisited), navy (visited), red (active) --> |
| <BODY |
| BGCOLOR="#FFFFFF" |
| TEXT="#000000" |
| LINK="#0000FF" |
| VLINK="#000080" |
| ALINK="#FF0000" |
| > |
| <A NAME="initial"> </A> |
| <!--#include virtual="header.html" --> |
| |
| <H1 ALIGN="CENTER">Running a High-Performance Web Server for HPUX</H1> |
| |
| <PRE> |
| Date: Wed, 05 Nov 1997 16:59:34 -0800 |
| From: Rick Jones <<A HREF="mailto:raj@cup.hp.com">raj@cup.hp.com</A>> |
| Reply-To: raj@cup.hp.com |
| Organization: Network Performance |
| Subject: HP-UX tuning tips |
| </PRE> |
| |
| Here are some tuning tips for HP-UX to add to the tuning page. |
| |
| <P> |
| |
| For HP-UX 9.X: Upgrade to 10.20<BR> |
| For HP-UX 10.[00|01|10]: Upgrade to 10.20 |
| |
| <P> |
| |
| For HP-UX 10.20: |
| |
| <P> |
| |
| Install the latest cumulative ARPA Transport Patch. This will allow you |
| to configure the size of the TCP connection lookup hash table. The |
| default is 256 buckets and must be set to a power of two. This is |
| accomplished with adb against the *disc* image of the kernel. The |
| variable name is tcp_hash_size. |
| |
| <P> |
| |
| How to pick the value? Examine the output of |
| <A HREF="ftp://ftp.cup.hp.com/dist/networking/tools/connhist"> |
| ftp://ftp.cup.hp.com/dist/networking/tools/connhist</A> and see how many |
| total TCP connections exist on the system. You probably want that number |
| divided by the hash table size to be reasonably small, say less than 10. |
| Folks can look at HP's SPECweb96 disclosures for some common settings. |
| These can be found at <A HREF="http://www.specbench.org/"> |
| http://www.specbench.org/</A>. If an HP-UX system was |
| performing at 1000 SPECweb96 connections per second, the TIME_WAIT time |
| of 60 seconds would mean 60,000 TCP "connections" being tracked. |
| |
| <P> |
| |
| Folks can check their listen queue depths with |
| <A HREF="ftp://ftp.cup.hp.com/dist/networking/misc/listenq"> |
| ftp://ftp.cup.hp.com/dist/networking/misc/listenq</A>. |
| |
| <P> |
| |
| If folks are running Apache on a PA-8000 based system, they should |
| consider "chatr'ing" the Apache executable to have a large page size. |
| This would be "chatr +pi L <BINARY>." The GID of the running executable |
| must have MLOCK privileges. Setprivgrp(1m) should be consulted for |
| assigning MLOCK. The change can be validated by running Glance and |
| examining the memory regions of the server(s) to make sure that they |
| show a non-trivial fraction of the text segment being locked. |
| |
| <P> |
| |
| If folks are running Apache on MP systems, they might consider writing a |
| small program that uses mpctl() to bind processes to processors. A |
| simple pid % numcpu algorithm is probably sufficient. This might even go |
| into the source code. |
| |
| <P> |
| |
| If folks are concerned about the number of FIN_WAIT_2 connections, they |
| can use nettune to shrink the value of tcp_keepstart. However, they |
| should be careful there - certainly do not make it less than oh two to |
| four minutes. If tcp_hash_size has been set well, it is probably OK to |
| let the FIN_WAIT_2's take longer to timeout (perhaps even the default |
| two hours) - they will not on average have a big impact on performance. |
| |
| <P> |
| |
| There are other things that could go into the code base, but that might |
| be left for another email. Feel free to drop me a message if you or |
| others are interested. |
| |
| <P> |
| |
| sincerely, |
| |
| <P> |
| |
| rick jones<BR> |
| <A HREF="http://www.cup.hp.com/netperf/NetperfPage.html"> |
| http://www.cup.hp.com/netperf/NetperfPage.html</A> |
| |
| <HR> |
| |
| <H3 ALIGN="CENTER"> |
| Apache HTTP Server Version 1.3 |
| </H3> |
| |
| <A HREF="./"><IMG SRC="../images/index.gif" ALT="Index"></A> |
| <A HREF="../"><IMG SRC="../images/home.gif" ALT="Home"></A> |
| |
| </BODY></HTML> |
| |