Daniel Carrera wrote:
That said, I would like to better understand what "500 HTTP connections" means. If you get a single web page that has one HTML file, two images and two CSS files, is that one HTTP connection or five? In other words, does "500 HTTP connections" equate to 500 users or 100?
Each request to the server is considered a connection. So if you view the front page and you have the index file (index.php), 3 CSS files, 4 JS files and 10 images that would amount to 18 connections. That's why things like CSS and JS aggregation/compression help out so much. Also other tuning methods when it comes to themes, such as using CSS sprites to handle most of the images.
Op-code caching can help a lot in this situation. Even if 10% of those connections are only for the actual Drupal page, that's still 50 hits at once. That also means 50 times that the server has to read in all the source files that makes up Drupal, then compile them over to the op-code that computers understand and execute it.
Also, I have no idea if 1000 HTTP connections is a reasonable configuration or not.
That's one of the biggest variables their is when it comes to server tuning. For shared hosting a setting that high is about par, though it isn't optimal. Yeah they are offering server side scripting like PHP, but they are tuned more to being a straight static server and can handle some server side requests in there. Basically its the standard operation of hosting companies when it comes to shared packages. Hosting companies do keep those settings high so they can find out who is taking up the most resources on a server. Then they have a selling point for getting people to upgrade (chalk that up as one of the things I learned working for a hosting company years ago).
If the server is starting to choke at 500 connections, then ideally it would be tuned to a smaller portion of that. I would say around 300-400 connections. You also need to keep in mind things like MySQL running on the same server. Sure it can operate at 500 99% of the time, but if you end up getting fragmented tables or the query cache isn't primed then MySQL is going to need some processing power (as well as dozens of other things that run on a typical server) also and that will reduce the number of connections, so its always best to set the maximum connections on Apache to somewhere between 60 and 80% of what you see it handling, or do further benchmarking that alters site content and will invalidate things like query cache.
Overall though I would say you are at the point shared hosting isn't going to cut it anymore. I doubt they will change to much to accommodate your site since they also have to consider the other sites on the machine. I would start looking at going to some other hosting solution, be it dedicated, VPS or cloud.
Jamie Holly