Persistant connections are a problem. Here's what I've found works. First, compile postgres with a -with-maxbackends=256 or 1024 or something (1024 is the limit I think without editing the code) like that.
Next, set apache for a maximum of say, 150 children. Start postgres with a -N of 200 or so, so you won't ever run out of children.
Assuming you have enough memory you should be fine with this setup, as the persistant connections really are much more efficient on a site with lots of page views.
The default limit of 32 in postgres is pretty much too low for any but single user development or small intranet use.
Also, I've found that the proper behavior of reusing connections and such is better under the latest releases, but it seems like apache/postgres like to open about 8 spare pconnects before they start using them.