KeepAlive allows you to make multiple requests in a single TCP connection. This is especially useful for html pages with lots of images. If KeepAlive is set to Off, then a separate connection will be created for the page itself and for each image (which will need to be processed by the master process), which is bad for both the server and the client. So for such cases it is recommended to set KeepAlive to On. For other applications (for example, for a download server), KeepAlive may be useless and even harmful, because when KeepAlive is on, the server does not close the connection immediately, but waits for KeepAliveTimeout seconds of the new request. To keep processes from hanging for too long in idle waiting, set KeepAliveTimeout small enough, usually about 5-10 seconds is enough.