Yes, this is a common problem. It is also the point where most people's Apache knowledge / system knowledge ends :-)
It is a long topic. First, can you reproduce the behaviour or see it frequently? Or does it just happen "sometimes" and you notice it only when it's too late to debug anything?
The thing is, debugging the failure is also possible post-mortem by analysing logs, but those need to be prepared for the event before, but as you don't know what to look for it can be more work.
To find out where the resource bottleneck could be, a good first step could be to enable mod_status, make it accessible from localhost or some trusted location and look at the server status (/server-status). It might be impossible to look at the server status when it's "too late" and Apache doesn't react anymore, but it is possible to gather interesting data before.
Since you tagged your question "mysql", another question would be if there's a backend database that Apache has to wait for. A little mysql tuning could solve all your problems, but that would only one of the possibilities for the failure that you see. Logging the server status, a little bit of "top" output and mysqls slow-query-log would give insight into this. In addition, check the memory configuration of mysql, if you have suspicions that it might not be taken care of already.
Lastly, it is important to make sure that Apache won't be using too much memory, when it queues up requests, or the machine will start swapping and finally kill Apache (or something else). Assess how much memory each Apache prozess needs. That is not easily visible in the process status but can be calculated with this script: http://cmdline.net/misc/httpd2-memusage . Then see how much memory your system can maximally spend on Apache processes, and set MaxClients accordingly - so that Apache will never use more than what's available. (You multiply the RAM need of an average process by the number of processes, simple math.) Some other sizing directives will probably need to be adjusted as well, so they match the MaxClients. This is something that many setups lack - but is an essential protection against little "explosions".
Finally, is your Apache relatively busy? Then I can almost blindly recommend to reduce KeepaliveTimeout to 2 seconds.