We run a number of reality show websites. For a good part of the year the traffic and revenue stink, but we peak when the contestents are getting voted off. That means for about 4 months a year for just a day or two a week for a couple hours we max out the CPU/Memory/Max connections. It's just like a DDOS attack - and our support staff for our hosting thought it was just that when I asked them for suggestions. We are already on a mid level server, and have optimized what we can (using cache, optimized mysql, etc... ) It's just not enough. The problem is the revenue is only high for a few weeks of the year and from a cost/ROI perspective it's not worth us going all out and having 3 servers. It barely justifies it's own space now for 8 or 9 months out of the year. 10 bucks a day or so.... So - what's the best solution you can think of? I'm willing to upgrade the server - but not add a new one at this point. Any options?
Tried a php accelerator? Tried saving the whole page as a static file and serving it (if it is possible) ? Other than that and upgrading hardware there's not much I can think of There are companies specialized in dealing with such situations but they usually cost a lot, far more than a couple of dedicated servers
So what kind of jump you think I'm going to run into moving to a quad core higher end server? - I'm running this now: Processor #1 Vendor: GenuineIntel Processor #1 Name: Intel(R) Pentium(R) D CPU 3.00GHz Processor #1 speed: 2993.379 MHz Processor #1 cache size: 2048 KB Processor #2 Vendor: GenuineIntel Processor #2 Name: Intel(R) Pentium(R) D CPU 3.00GHz Processor #2 speed: 2993.379 MHz Processor #2 cache size: 2048 KB There isn't much left to optimize - it's just to many people at once. Digg effect once a week for 4 hours or so. I've never run anything other than similar to the set up I have now - so I have no clue what to expect. I do know cost wise I'm going from around 200 to about 400 per month.
Instead of moving to a bigger, much more expensive server, why don't you try spreading the load across multiple cheaper ones? You can get a few lower power servers on a temporary basis, before the time that you know the load will be high, and distribute from there. Best to try and identify what it is that is hitting you so hard. Is it the images/video/flash that you're serving? Is it the dynamic content processing that's taking most of the resources? Or are you just receiving too many connections at once? Once you can answer those, you can consider how to scale. Maybe move all the images/other files to a CDN or multiple servers. Move to a lighter web server. Experiment with DNS load balancing etc.
You might want to try a grid hosting provider. They technically scale based on your current needs. Or you can always try the new Amazon Web Services. You can schedule adding servers and removing them for the time periods that you need. It is pretty cool actually and you can actually build images of various different operating systems extremely easily. Plus the prices are really affordable. http://www.amazon.com/gp/browse.html?node=3435361
Check out www.caro.net. They've got a dual quadcore (8 cores total) with 4GB of RAM, and dual 500GB hard drives for $334 per month. That's not a bad deal...
When we have had large (planned) spikes in traffic in the past we tend to purchase the services of a data network like Akamai. They only host static files so we snapshot the website every five minutes or so and synchronise the static html files with the data network. Another way of getting more out of your existing server is to have your PHP create a cache of the generated html and serve that cached version if it is less than 15 minutes old.