| <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> |
| <HTML> |
| <HEAD> |
| <TITLE>Performance Tuning Tips for Digital Unix</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">Performance Tuning Tips for Digital Unix</H1> |
| |
| Below is a set of newsgroup posts made by an engineer from DEC in |
| response to queries about how to modify DEC's Digital Unix OS for more |
| heavily loaded web sites. Copied with permission. |
| |
| <HR> |
| |
| <H2>Update</H2> |
| From: Jeffrey Mogul <mogul@pa.dec.com><BR> |
| Date: Fri, 28 Jun 96 16:07:56 MDT<BR> |
| |
| <OL> |
| <LI> The advice given in the README file regarding the |
| "tcbhashsize" variable is incorrect. The largest value |
| this should be set to is 1024. Setting it any higher |
| will have the perverse result of disabling the hashing |
| mechanism. |
| |
| <LI>Patch ID OSF350-146 has been superseded by |
| <BLOCKQUOTE> |
| Patch ID OSF350-195 for V3.2C<BR> |
| Patch ID OSF360-350195 for V3.2D |
| </BLOCKQUOTE> |
| Patch IDs for V3.2E and V3.2F should be available soon. |
| There is no known reason why the Patch ID OSF360-350195 |
| won't work on these releases, but such use is not officially |
| supported by Digital. This patch kit will not be needed for |
| V3.2G when it is released. |
| </OL> |
| <HR> |
| |
| |
| <PRE> |
| From mogul@pa.dec.com (Jeffrey Mogul) |
| Organization DEC Western Research |
| Date 30 May 1996 00:50:25 GMT |
| Newsgroups <A HREF="news:comp.unix.osf.osf1">comp.unix.osf.osf1</A> |
| Message-ID <4oirch$bc8@usenet.pa.dec.com> |
| Subject Re: Web Site Performance |
| References 1 |
| |
| |
| |
| In article <skoogDs54BH.9pF@netcom.com> skoog@netcom.com (Jim Skoog) writes: |
| >Where are the performance bottlenecks for Alpha AXP running the |
| >Netscape Commerce Server 1.12 with high volume internet traffic? |
| >We are evaluating network performance for a variety of Alpha AXP |
| >runing DEC UNIX 3.2C, which run DEC's seal firewall and behind |
| >that Alpha 1000 and 2100 webservers. |
| |
| Our experience (running such Web servers as <A |
| HREF="http://altavista.digital.com">altavista.digital.com</A> |
| and <A HREF="http://www.digital.com" |
| >www.digital.com</A>) is that there is one important kernel tuning |
| knob to adjust in order to get good performance on V3.2C. You |
| need to patch the kernel global variable "somaxconn" (use dbx -k |
| to do this) from its default value of 8 to something much larger. |
| |
| How much larger? Well, no larger than 32767 (decimal). And |
| probably no less than about 2048, if you have a really high volume |
| (millions of hits per day), like AltaVista does. |
| |
| This change allows the system to maintain more than 8 TCP |
| connections in the SYN_RCVD state for the HTTP server. (You |
| can use "netstat -An |grep SYN_RCVD" to see how many such |
| connections exist at any given instant). |
| |
| If you don't make this change, you might find that as the load gets |
| high, some connection attempts take a very long time. And if a lot |
| of your clients disconnect from the Internet during the process of |
| TCP connection establishment (this happens a lot with dialup |
| users), these "embryonic" connections might tie up your somaxconn |
| quota of SYN_RCVD-state connections. Until the kernel times out |
| these embryonic connections, no other connections will be accepted, |
| and it will appear as if the server has died. |
| |
| The default value for somaxconn in Digital UNIX V4.0 will be quite |
| a bit larger than it has been in previous versions (we inherited |
| this default from 4.3BSD). |
| |
| Digital UNIX V4.0 includes some other performance-related changes |
| that significantly improve its maximum HTTP connection rate. However, |
| we've been using V3.2C systems to front-end for altavista.digital.com |
| with no obvious performance bottlenecks at the millions-of-hits-per-day |
| level. |
| |
| We have some Webstone performance results available at |
| http://www.digital.com/info/alphaserver/news/webff.html |
| |
| <EM>[The document referenced above is no longer at that URL -- Ed.]</EM> |
| |
| I'm not sure if these were done using V4.0 or an earlier version |
| of Digital UNIX, although I suspect they were done using a test |
| version of V4.0. |
| |
| -Jeff |
| |
| <HR> |
| |
| ---------------------------------------------------------------------------- |
| |
| From mogul@pa.dec.com (Jeffrey Mogul) |
| Organization DEC Western Research |
| Date 31 May 1996 21:01:01 GMT |
| Newsgroups <A HREF="news:comp.unix.osf.osf1">comp.unix.osf.osf1</A> |
| Message-ID <4onmmd$mmd@usenet.pa.dec.com> |
| Subject Digital UNIX V3.2C Internet tuning patch info |
| |
| ---------------------------------------------------------------------------- |
| |
| Something that probably few people are aware of is that Digital |
| has a patch kit available for Digital UNIX V3.2C that may improve |
| Internet performance, especially for busy web servers. |
| |
| This patch kit is one way to increase the value of somaxconn, |
| which I discussed in a message here a day or two ago. |
| |
| I've included in this message the revised README file for this |
| patch kit below. Note that the original README file in the patch |
| kit itself may be an earlier version; I'm told that the version |
| below is the right one. |
| |
| Sorry, this patch kit is NOT available for other versions of Digital |
| UNIX. Most (but not quite all) of these changes also made it into V4.0, |
| so the description of the various tuning parameters in this README |
| file might be useful to people running V4.0 systems. |
| |
| This patch kit does not appear to be available (yet?) from |
| <A HREF="http://www.service.digital.com/html/patch_service.html" |
| >http://www.service.digital.com/html/patch_service.html</A> |
| so I guess you'll have to call Digital's Customer Support to get it. |
| |
| -Jeff |
| |
| DESCRIPTION: Digital UNIX Network tuning patch |
| |
| Patch ID: OSF350-146 |
| |
| SUPERSEDED PATCHES: OSF350-151, OSF350-158 |
| |
| This set of files improves the performance of the network |
| subsystem on a system being used as a web server. There are |
| additional tunable parameters included here, to be used |
| cautiously by an informed system administrator. |
| |
| TUNING |
| |
| To tune the web server, the number of simultaneous socket |
| connection requests are limited by: |
| |
| somaxconn Sets the maximum number of pending requests |
| allowed to wait on a listening socket. The |
| default value in Digital UNIX V3.2 is 8. |
| This patch kit increases the default to 1024, |
| which matches the value in Digital UNIX V4.0. |
| |
| sominconn Sets the minimum number of pending connections |
| allowed on a listening socket. When a user |
| process calls listen with a backlog less |
| than sominconn, the backlog will be set to |
| sominconn. sominconn overrides somaxconn. |
| The default value is 1. |
| |
| The effectiveness of tuning these parameters can be monitored by |
| the sobacklog variables available in the kernel: |
| |
| sobacklog_hiwat Tracks the maximum pending requests to any |
| socket. The initial value is 0. |
| |
| sobacklog_drops Tracks the number of drops exceeding the |
| socket set backlog limit. The initial |
| value is 0. |
| |
| somaxconn_drops Tracks the number of drops exceeding the |
| somaxconn limit. When sominconn is larger |
| than somaxconn, tracks the number of drops |
| exceeding sominconn. The initial value is 0. |
| |
| TCP timer parameters also affect performance. Tuning the following |
| require some knowledge of the characteristics of the network. |
| |
| tcp_msl Sets the tcp maximum segment lifetime. |
| This is the maximum lifetime in half |
| seconds that a packet can be in transit |
| on the network. This value, when doubled, |
| is the length of time a connection remains |
| in the TIME_WAIT state after a incoming |
| close request is processed. The unit is |
| specified in 1/2 seconds, the initial |
| value is 60. |
| |
| tcp_rexmit_interval_min |
| Sets the minimum TCP retransmit interval. |
| For some WAN networks the default value may |
| be too short, causing unnecessary duplicate |
| packets to be sent. The unit is specified |
| in 1/2 seconds, the initial value is 1. |
| |
| tcp_keepinit This is the amount of time a partially |
| established connection will sit on the listen |
| queue before timing out (<EM>e.g.</EM>, if a client |
| sends a SYN but never answers our SYN/ACK). |
| Partially established connections tie up slots |
| on the listen queue. If the queue starts to |
| fill with connections in SYN_RCVD state, |
| tcp_keepinit can be decreased to make those |
| partial connects time out sooner. This should |
| be used with caution, since there might be |
| legitimate clients that are taking a while |
| to respond to SYN/ACK. The unit is specified |
| in 1/2 seconds, the default value is 150 |
| (ie. 75 seconds). |
| |
| The hashlist size for the TCP inpcb lookup table is regulated by: |
| |
| tcbhashsize The number of hash buckets used for the |
| TCP connection table used in the kernel. |
| The initial value is 32. For best results, |
| should be specified as a power of 2. For |
| busy Web servers, set this to 2048 or more. |
| |
| The hashlist size for the interface alias table is regulated by: |
| |
| inifaddr_hsize The number of hash buckets used for the |
| interface alias table used in the kernel. |
| The initial value is 32. For best results, |
| should be specified as a power of 2. |
| |
| ipport_userreserved The maximum number of concurrent non-reserved, |
| dynamically allocated ports. Default range |
| is 1025-5000. The maximum value is 65535. |
| This limits the numer of times you can |
| simultaneously telnet or ftp out to connect |
| to other systems. |
| |
| tcpnodelack Don't delay acknowledging TCP data; this |
| can sometimes improve performance of locally |
| run CAD packages. Default is value is 0, |
| the enabled value is 1. |
| |
| Digital UNIX version: |
| |
| V3.2C |
| Feature V3.2C patch V4.0 |
| ======= ===== ===== ==== |
| somaxconn X X X |
| sominconn - X X |
| sobacklog_hiwat - X - |
| sobacklog_drops - X - |
| somaxconn_drops - X - |
| tcpnodelack X X X |
| tcp_keepidle X X X |
| tcp_keepintvl X X X |
| tcp_keepcnt - X X |
| tcp_keepinit - X X |
| TCP keepalive per-socket - - X |
| tcp_msl - X - |
| tcp_rexmit_interval_min - X - |
| TCP inpcb hashing - X X |
| tcbhashsize - X X |
| interface alias hashing - X X |
| inifaddr_hsize - X X |
| ipport_userreserved - X - |
| sysconfig -q inet - - X |
| sysconfig -q socket - - X |
| |
| </PRE> |
| <!--#include virtual="footer.html" --> |
| </BODY> |
| </HTML> |