Great, thanks for the suggestions! I have some questions.
I don't believe we've had this problem, squid should keep serving cached pages reasonably efficiently until the filedescriptor limit is reached or you run out of CPU. You might want to check that there is in fact no communication back to the webserver when squid serves "cached" pages. It might be doing an If-Modified-Since (IMS) refresh, or a full request. If it is, then you need to make sure you're sending the right Expires and Cache-Control headers.
The correct headers are just
Cache-Control: s-maxage=2678400, must-revalidate, max-age=0
which are generated in Outputpage.php, right?
Make sure you're using epoll not poll. There's the possibility that your select loop is becoming too slow as the connection count increases. You'll see high system CPU and a high select loop period in cachemgr.cgi.
I'm not sure what epoll and poll are and can't seem to find any documentation on them, can you point me in the right direction?
Thanks! Travis