In one of my previous posts, I have talked about "Reaching Capacity in ASP.NET – Tips". One thing I forgot to talk about is : what is capacity?
As always, I wanted first to give you the "dictionary" translation…so I "googled" (or "lived") it and came up with this:
"Capacity testing is complementary to load testing and it determines your server's ultimate failure point, whereas load testing monitors results at various levels of load and traffic patterns. You perform capacity testing in conjunction with capacity planning. You use capacity planning to plan for future growth, such as an increased user base or increased volume of data. For example, to accommodate future loads you need to know how many additional resources (such as Processor, memory, disk space, or network bandwidth) are necessary to support future usage levels. Capacity testing helps you identify a scaling strategy to determine whether you should scale up or scale out."
A good explanation, right?
Still I have some things missing…How do I know if I reached my capacity?
Basically, as I see it, there are three things that are responsible for reaching capacity:
- Software – You can think about it as .NET, J2EE or other platform related issues.
- Hardware – This is straight forward…Think about your 4 main critical resources: Memory, Processor, IO and Network.
- Configurations – Any configurable resources or applications, for example think about the IIS (Internet Information Services). Under some configurations, I can make a given web site support only 100 concurrent users.
When your software is your bottleneck, it is sometimes possible to enhance your hardware and squeeze some more juice out of the software capacity capabilities and fine tuning your configurations can increase the total capacity of your software.
When you are testing a Web Site, you will want to answer this about your application:
Under a given hardware with the given configurations, what is the maximum user load I can reach?