Subject: kernel tuning issues
To: None <netbsd-help@netbsd.org>
From: Julian C. Dunn - Lists <lists@aquezada.com>
List: netbsd-help
Date: 06/09/2003 23:38:20
This evening I accidentally killed our webserver by adding another
VirtualHost to it. Before Apache died, the kernel did emit, once, the
message:

Jun  9 21:59:10 neutrino /netbsd: proc: table is full - increase
kern.maxproc or NPROC

A quick "sysctl kern.maxproc" showed the value to be 532, corresponding
to a maxusers setting of 32.

Now, I know that maxusers is set way too low for this machine, and I'll
have to fix it. However, even though I immediately tried to remove the
vhost that pushed the system over the top, Apache continued to die. The
only way I managed to bring Apache back up was to delete all the vhosts,
start it, then put the vhosts back and "apachectl graceful" the thing.

A "ktrace httpd" showed something like:

...
  1953 httpd    RET   open 210/0xd2
  1953 httpd    CALL  break(0x842c000)
  1953 httpd    RET   break 0
  1953 httpd    CALL  pipe
  1953 httpd    RET   pipe 211/0xd3
  1953 httpd    CALL  fork
  1953 httpd    RET   fork 2215/0x8a7
  1953 httpd    CALL  pipe
  1953 httpd    RET   pipe 213/0xd5
  1953 httpd    CALL  fork
  1953 httpd    RET   fork 2216/0x8a8
  1953 httpd    CALL  pipe
  1953 httpd    RET   pipe -1 errno 24 Too many open files
  1953 httpd    CALL  exit(0x1)

So then I did a "pstat -T" and we had something like:

631/2000 files
   4397 vnodes
11M/2047M swap space

All right, I thought, we're running out of vnodes, so I did "sysctl -w
kern.maxvnodes=8802" (given that kern.maxvnodes is by default, 4401, in
our scenario). This didn't seem to help Apache start by itself, either,
without the hack described above (remove most vhosts, start apache, then
put the vhosts back and -USR1 it)

So now I'm unsure how to go about solving this problem. I have some
notion that increasing maxusers will help, but why? I don't have much of
an understanding about what role all of these kernel parameters play,
and I'd like to tune the system intelligently instead of just shooting
in the dark without learning anything. Can anyone offer any advice or an
explanation of what I should do and why?

The machine in question is a Pentium II/400 with 256MB of RAM and serves
about 75 virtual hosts.

- Julian

-- 
Julian C. Dunn <julian@dreaming.org>
Director of Operations, The Dreaming Electronic Community Network, Inc.
Support e-mail: support@dreaming.org
WWW: http://www.dreaming.org/