Why does Apache have MaxClients and ServerLimit

apache-2.2mpm-prefork

I'm using prefork apache 2.2 and I can't seem to figure out why there is a MaxClients directive and a ServerLimit directive.

I understand that you need to increase both of these in step — google has told me this over and over again. As far as I can tell they both control the maximum number of Apache process running at any time.

Why do they both exist? For prefork, they seem redundant. Is there a subtle difference I'm missing?

Best Answer

Serverlimit = limit for processes in general (default: 256)

MaxClients = limit for child-processes

You don't have to set ServerLimit as long as Maxclients < 256 btw. (but you can save some memory if you do so)