Performance Testing For The Masses
"FAST is cool, huh" - good friend of mine told me.
No doubt.
How do I identify the bottleneck with architecture like this?
- Is it Browser starving resources for client side JavaScript/AJAX heavy processing?
- Is it jumbo Http Responses (ViewState for example)?
- Is it Web Server processing takes my time?
- Is it Application Server (let's assume it is Web Services) takes my time?
- Is it about DB processing?
Here is the set of tools and steps for sanity check when experiencing performance hits for web applications:
Measuring User experience (Ux) time
Information gathered during this step is the overall latency that end user would experience
- General concepts are always good - How To: Stress Test Web Applications
- Visual Studio Team System owners should go straight to How To: Load Test Web Applications Using Visual Studio Team System
- All others can enjoy freebies like Web Application Stress Tool (free download).
Factoring browser processing time
Information gathered during this step can reveal what content type is served back before it get processed by Browser. Here is an example if the data collected by Fiddler (free download):
RESPONSE BYTES (by Content-Type)
--------------
image/gif: 344
~headers: 12,017
text/html: 66
text/xml: 1,107
text/plain: 687
application/json: 104,497
Fiddler gives also time to last byte for each resource too:
Understanding Web Server processing time (ASPX and ASMX)
Information gathered during this step can tell you which server - Web Server that serves Web Pages or Web Server that serves Web Services - consumes most of the time. Obviously former should be greater :)
For that purpose set time-taken property to be logged by IIS:
Measuring DB processing time
I'll leave it for another day
Having all this data at hand one can go ahead and focus on the troublemaker.
Performance Engineering in details is here https://msdn.com/Perf (redirects to https://msdn2.microsoft.com/en-us/library/ms998530.aspx)
Enjoy