Use MaxClients to stop your server from swapping.. that's usually how I handle it.
I try and figure out roughly how big each apache process is, then figure out how many I can fit into memory reasonably -- that's my MaxClients setting.
If your site gets slammed with more than MaxClients worth of requests, you shouldn't end up swapping. Additional clients will sit in the socket queue until a worker becomes available. If it takes too long, the server will time out. If the queue is too long, they'll get a connection refused.
If you have MaxClients set too high, your webserver will start thrashing and swapping. When this happens, each request will take longer to process and you'll end up compounding the problem.