We're focusing on an internet site for any client that (at least) is anticipated to obtain a fair quantity of traffic on the first day. You will find press announcements, individuals are blogging about this, etc. I'm a little concerned that we are likely to fall flat on our face on the first day. Do you know the primary stuff you would take a look at to make sure (ahead of time without real traffic data) that you could stay standing following a large launch.
Particulars: This can be a L/A/M/PHP stack, utilizing an internally developed MVC framework. This really is presently being released on a single server, with Apache and MySQL both onto it, but we are able to break that up if necessary. We're already setting up memcached and doing just as much PHP-level caching once we can think about. A few of the pages are rather query intensive, and that we are utilizing Smarty as our template engine. Bear in mind there's no time to adjust these major aspects--this is actually the only the setup. What types of things should we be careful for?
Measure first, then optimize. Excuses have you employed any loadtesting? Where would be the bottlenecks?
Knowing your bottlenecks you'll be able to smartly decide if you want additional DB boxes or web boxes, at this time you'd you need to be speculating.
Also, so how exactly does your loadtesting results compare against your expected traffic? Are you able to handle 2x the expected traffic? 5x? How easy/fast are you able to acquire &lifier release extra hardware? I am sure the company requirement would be to not fail throughout launch, so make certain you've lots of capacity available, you could release it later on once the load has stable and guess what happens you'll need.
I'd a minimum of factor out all static content. Setup another vhost elsewhere and load all of the graphics/css/js about it. You can purchase additional cycles offloading the serving of this kind of content. In case your really concerned you are able to register and employ a content distribution service. You will find lots now much like Akamai and quite cheap.
Also try this may be to make use of apache mod_proxy to help keep produced page output for a quantity of your time. APC would be also quite functional.. You can employ output loading capture + the final modified duration of related data around the page, and employ the APC cached version. When the page is not valid any longer, you regenerate and store in APC again.
Best of luck, it will be a chance to learn!
Possess a beta period in which you allow in as numerous customers as possible handle, measure your site's performance, exercise bugs prior to going live.
You may either control the amount of customers clearly inside a private beta, or perhaps a Google-style semi-public beta where each user has numerous recommendations that they'll offer for their buddies.
To organize or handle a spike (or peak) performance, I'd first determine regardless if you are ready through some simple performance testing with something similar to jmeter.
You can easily setup and obtain began and provides you with early metrics whether you'll handle an expected peak load.
However given your time and effort constraints, other steps to consider is always to prepare static versions of content which will attract the greatest attention (for example press announcements, in case your launch day). Also make sure that you are earning the very best utilization of client side caching (1 less request for your server could make a big difference). The net already created for very high scalability and effective use content caching is the closest friend during these situations.
There's a great podcast on high scalability on software engineering radio on the appearance of the brand new Protector website when things calm lower.
best of luck around the launch
Fundamental Steps to harden your website for top traffic.
1) Make use of a low-cost tool like https://browsermob.com/ to load-test out your site. At least you ought to be searching at 100K unique site visitors each hour. If you achieve an advertisement from MSN webpage, turn to have the ability to handle 500K uniques each hour.
2) Move all static graphic/video content to some CDN. Edgecast and Amazon . com are two excellent options.
3) Use Jet Profiler to profile your MySQL Server to evaluate any slow carrying out queries. Minor changes might have huge benefits.