Ok, so it's a slightly different architecture, but it's still really an evolution of the single-process select-based server. To do anything "application like" - running code in ruby, php, python - you apparently (correct me if I'm wrong, because I'm just going from what I found after 5 minutes on the site) have to farm things out to FCGI, so you're back to the Apache model of separate processes - noting of course that unlike some people erroneously think, apache's processes each have a select loop, so it's not just forking processes for every connection!
My point is that the application processes are where things are tricky. Even 'big slow apache' can saturate fast connections with static content. The real trick is to get the most out of your dynamic code without under utilizing your resources (by launching only one mongrel instance, for example), or running things into the ground by letting your apps try and grab too much memory.