High performance websites

The ancient Eastern art of being able to fold road-maps properly.

I remembered this quote from the Meaning of Liff while thinking about my latest and recent involvement in tuning a web sites that are complex and have high volumes of traffic.

Complex websites have many components interacting horizontally (in sequence) and vertically (on top of each other like a stack). Sequential components such as firewalls, load balancers, web servers, application servers, databases, content management servers and third party applications. Throughput is determined by the weakest link in the chain. So remove one bottleneck and you end up searching in many places for the next bottle neck. A strategy often used is by offloading traffic from one complex component to a more simple component. Caching in front-end servers is a classic example of this strategy.

A website integrates vertically, meaning one components uses another component to function. Examples are the HTTP and TCP/IP protocol, application servers, Java, databases, Operating system and hardware. An improvement in one component can and most likely will influence the performance of the other, often in ways you do not expect it. Change something in HTTP for the better, can have a downside on the TCP/IP level.

As an example one discussion that came up was about honoring Keep-Alive on http requests. My wisdom and experience has learned me that Keep-Alive’s are bad things for servers with a lot of traffic. Some colleagues agreed, others disagreed. Who is right? Most likely it depends… on many factors. So no one can tell. A quick scan over some high volume sites (CCN, Amazon, Yahoo, Google, AOL) shows that opinions on this topic vary. Some use keep-alive’s others instruct the client to close the connection.

In high volume websites there are many components each having many options to tune the performance. You need to look at them individually, but at the same time honor their role in the greater whole. As a result there is no clear cut recipe how to set up a high volume website. What works in situation A might or might not work in situation B. So it all depends on the specific situation and experience of the team.

I have some knowledge on this subject but I am by no means an expert or authority on this subject. A good starting point this the Yahoo website about Exceptional Performance.

What most online resources fail to point out is that no matter how many testing and preparation you do, the proof is in eating the pudding. And while you are watching your site slow down due to increased traffic, you need a good structure and set of rules to let the technical people do their work, make sure they progress in the right direction and keep the customer informed and involved what you are doing.


%d bloggers like this: