EVERY process can and will be in a zombie state, eventually. the parent process can call wait or wait4() or similar to "reap" the zombies, and usually does nearly instantly.
they do not consume resources beyond a simple entry in the process table (i checked and double checked the 4.4BSD red book on this). no resources, unless you have like 100000 zombies on your system taking up all of the PIDs (that i'd like to see.

)
fwiw HQ, it's pretty much a "known bug" that apache SSI leaves zombies aroung longer than it probably ought to. zombies are not a problem, however, and are not indicative of a real problem.
if you switch from SSI to PHP loading the CGIs or just straight CGIs you should see them disappear from 'top'.
regarding keepalive - ALWAYS set that to off.
because apache uses a pre-fork model (ie, every client connects to a separate server), there are a limited number of connections the server can handle (MaxClients). with keepalive on, you're basically reserving one of the servers for that one client for X period of time. with keepalive off, that server could be serving other clients during that X period. modern connections and servers do not gain a whole lot from keepalives - the TCP overhead just isn't as big a deal any more.
but give it a shot.
here's one thing to check while you're tweaking: server-status. add this to your httpd.conf:
ExtendedStatus on
<Location /HQ-server-status>
SetHandler server-status
</Location>
and restart. then go to
http://server.name/HQ-server-status . you'll see a matrix of connections and servers. if you see a bunch of K's and few W's or R's or L's or S's, you may want to turn off keepalives. (this is especially true if you the K count reaches the MaxClient count... at that point you are slowing down the experience for your visitors!)
free tip for apache performance tuning, btw.
lower MaxRequestsPerChild to 1000, and lower MinSpareServers to 1 and MaxSpareServers to 1. then raise MaxClients to whatever your server can support. this way, if there are memory leaks, your servers won't last long enough for it to matter much (MaxReqsPerChld), and your server will use a pretty standard amount of memory at all times (Min/MaxSpares and MaxClients). stability is good!