Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 26 Mar 1999 08:19:26 -0800
From:      dan@wolf.com
To:        Steve Price <sprice@hiwaay.net>, freebsd-isp@FreeBSD.ORG
Cc:        hamellr@dsinw.com, freebsd-questions@FreeBSD.ORG
Subject:   Re: Need help fine-tuning a web server (fwd)
Message-ID:  <19990326081926.A1101@ns.wolf.com>
In-Reply-To: <Pine.OSF.4.02.9903260846190.22203-100000@fly.HiWAAY.net>; from Steve Price on Fri, Mar 26, 1999 at 08:51:38AM -0600
References:  <Pine.OSF.4.02.9903260846190.22203-100000@fly.HiWAAY.net>

next in thread | previous in thread | raw e-mail | index | archive | help
> I want to run a webserver that's going to probably be serving about 400
> requests simultaneously on average, but it may spike up to 900 at times.
> Bandwidth-wise, it'll be moving about 600+k/sec on a PII-450 w/384 megs
> RAM. There'll be a lot of CGI involved, as well as a MySQL database that's
> being used for authentication as well as keeping track of a bunch of user
> accounting data. I tried FreeBSD initially, but it didn't last 10 minutes
> before coming down.

I'll offer some advice based upon my experiences, but I've got 
to point out that I'm *not* veryu familiar with the kernel 
internals, so some of my advice might be a bit off.  If so, 
I'm sure folks with more experience will correct my (be gentle,
please!).

Your config is a little light in RAM.  I run a web server that 
averages about 250 connections, but peaks at a little over 400.
I've got 256 MB RAM and have 256 MB swap configured.  When I'm
running 250 connections, I've usually got 20 - 50 MB of swap in
use (and that's a very bad thing for a web server).  To support
400 connections, I'd strongly recommend going to 512 MB RAM. 
And be aware that when your load hits those 900 connection peaks,
you are going to be heavily into your swap space (which implies
that you need to configure *plenty* of swap).

> I searched on the web and checked links from the FreeBSD homepage, as well
> as a couple other FreeBSD related pages that I found, but found no
> information on tuning FreeBSD machines.  The HOWTOs for FreeBSD are
> minimal.  There aren't many users out there with easily accessible
> information on what they've done to make it work.
> 
> What do I need to do to make it work? Increase the number of tasks?  Can I
> just use ulimit, or do I need to change stuff in the kernel?  I noticed
> some stuff in there limiting the per-user tasks to 64, but that didn't
> look reasonable, and it looked like it got ignored anyway, so I don't know
> what bearing that had on the system.  How can I increase the maximum
> number of file descriptors/inodes?  Are there any changes I should make to
> the memory management stuff, and if so where and how?  What else needs to
> be done to a FreeBSD machine to allow it to handle heavy load?

The Apache pages at http://www.apache.org have some good useful info
on tuning Apache.  A search of the archives at http://www.freebsd.org
will reveal a little bit of info on performance tuning, but not a
lot.  What I've done is compile a kernel with maxusers set to 64, and 
including "options CHILD_MAX=256" and "options OPEN_MAX=256" (this 
mihgt be somewhat misguided, but that's how I learn - by experimenting 
and shooting myself in the foot).

I've modified /etc/login.conf to create a login class called
"www".  I've added "nobody" to this class.  The characteristics
I've defined for this class are:
   datasize-cur=128M
   stacksize-cur=64M
   memoryuse=128M
   memoryuse-cur=128M
   filesize=infinity
   maxproc=4096
   maxproc-cur=2048
   openfiles=4096
   openfiles-cur=2048

Dan Mahoney
dan@wolf.com



To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-isp" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?19990326081926.A1101>