Performance tuning your Episerver Website
Mon 22 June, 2015 / By Jon D Jones
With the advent of faster processes, quicker internet connections and advances in technology, it's quite surprising that a study done by Radware found that in eCommerce sites at least, web performance has slowed on average 16% than previous year (New Radware Research Reveals Top Retailers Sites Too Slow, Struggle to Meet Customer Needs).
With that in mind, in today's guide, I"m going to cover stress testing tools and tuning infrastructure performance to make sure your websites become faster and not slower.
Measuring Performance With A Stress Testing Tool
A very commonly overlooked action I see on a lot of projects is stress testing. It's very easy to get something working on your local development machine but on the day when everyone hits your website at the same time for whatever reason... how is your site going to respond?
I'm sad to say I've personally experienced this problem several times. When Brexit hits, your client has made national news, or it's simply just Black Friday for a short period of time you get 1000 times more traffic than usual and your website grounds to a halt.
One very simple way to test for these scenarios is to do some load testing. Nowadays, there are a number of tools available to load test your website. I've used Load Impact
before. Load Impact gently ramps up your traffic over a specified period so you can measure at what rate your website fails to perform under load.
Load Impact uses a freemium payment solution where you can create low load simulations by recording interactions with your Episerver site and then replaying those actions up to 100 virtual simultaneous users for 5 minutes for free. After that, you have to pay.
Other load testing tools I've heard good things about include BlazeMeter
Improve Your Infrastructure Performance
If you've followed advice like How To Improve Your Episerver Website’s Performance Using Yahoo Yslow Score
and made your application as honed as possible, then the next step is to consider improving the performance of your infrastructure.
A Content Delivery Network (CDN) like CloudFlare
or Amazon CloudFront
A CDN is usually a third party service that enables the static content on your site, like images and HTML files, to be distributed across a network of services around the world. The idea being that the closer your site visitors to where these static files live, the quicker your website will load. By using a CDN and moving your static content onto servers that are physically closer to visitors, network latency will be reduced.
Also, by moving the requests for static files off of your web server and onto a CDN, you also reduce the total load on your web server, meaning you can deal with more simultaneous users.
One word of caution, depending on the size of your client may affect what CDN's you can use. Usually to set-up a CDN you point your host to the IP address to the CDN's network. If the client has all their company's SMTP traffic going through that IP, re-pointing it to a CDN might cause things like the company's emails to stop working so don't switch over without doing some proper research and talking to the network guys.
Use a separate server for the database
Another option I've used a lot over the years is to consider moving your database onto a separate server to improve the performance of your Episerver website. Moving your SQL database will free up capacity on the web tier.
Now, not all Episerver websites are always very database intensive, if you have a pretty a simple brochure-ware site then this might be overkill. Again, doing something like a load test will figure out where the pain points will be.
After using a CDN and a separate server for your database, if you are still having performance issues then it's time to start thinking about load balancing. If budget isn't an issue, then I will always recommend a load balanced setup as it makes deploying new releases much easier. You take one node down, upload the code, bring it back up and take the other one down. Using this means you shouldn't have any downtime on your releases.
There are many Episerver websites using a load balanced solution out there but it does introduce a little bit of extra complexity. When you use a load balanced environment, you need to start thinking about things like how your caching will work between multiple servers.
In today's tutorial, we've covered some of the most commonly used infrastructure tricks that are used to boost capacity and performance on Episerver websites. Have your own view? Please leave a comment below: