Sign In
Nikhil's Blog
A .NET dev generalist blog covering pretty much everything under the sun of .NET.
Translate This Page
Translate this page
Powered by
Microsoft® Translator
Options
Blog Home
Email Blog Author
Share this
RSS for posts
Atom
RSS for comments
Search
Advanced search options...
Search In:
Everything
Blogs
Forums
People
Groups
Places
Pages
Date range:
All Time
Last Year
Last 6 Months
Last 3 Months
Last Month
Last Week
Last Two Days
Tags
.NET 2.0
ASP.NET 2.0
Build
C#
Catalog System
Certificates
CertMgr
Commerce Server 2007
Cryptography
EntLib
HttpHandler
MSI
Pages
Performance Testing
Profile System
Registry
Session
Setup and Deployment
Threads
UAC
Vista
VS 2005
VSTS
Web Application
Web Services
Archive
Archives
January 2009
(1)
November 2008
(1)
September 2008
(2)
July 2008
(1)
June 2008
(1)
May 2008
(2)
April 2008
(3)
December 2007
(1)
June 2007
(2)
May 2007
(1)
April 2007
(2)
February 2007
(2)
HowTo: Performance Test ASP.NET Web Services using VSTS
MSDN Blogs
>
Nikhil's Blog
>
HowTo: Performance Test ASP.NET Web Services using VSTS
HowTo: Performance Test ASP.NET Web Services using VSTS
nikhiln
5 Feb 2007 5:47 PM
Comments
0
This article is targetted at the newbie who's trying to conduct some meaningful performance testing of a typical ASP.NET webservice. Typical, in the sense, having a multi-tiered architecture and maybe interfacing with an external application and/or Web Service.
I have presented the "things-to-do" in a bullted format so that it can be used as a checklist.
So here we go...
Get the environment setup of the machines. In case of NLB farm, figure out how many nodes you'll need for a minimum. Eg: Two nodes for the Web Server and an accompanying NLB server IP. A couple of nodes for the Sql Server. A machine to simulate the interaction with an external system / app / WS. A machine to host and execute the test.
Using VSTS, create a test project to be used for the performance testing. Next, follow the steps at the VSTS Load Test team blog @
http://blogs.msdn.com/vstsloadtestblog/archive/2006/09/22/765608.aspx
to setup the Web Test for the Web Service. This project or solution needs to be used on the dedicated machine which has been setup to host the test rig.
Create a loadtest with the just created webtest as the executing test. Once you have set up the basic features from the UI while creating the LoadTest, right click on the "Run Settings" and click on Properties. In the properties window (which typically appears at the right side bottom) and change the Web Test Connection Model to ConnectionPool. Change the WebTest Connections Pool Size to a sufficiently large amount (maybe in the range of 2000-3000) if you are planning to test for thousands of concurrent users.
In case you have logged onto the test rig machine with a credential not associated with a domain controller (aka Active Directory account), you will have to run this command at the test machine's command prompt to enable the test solution to access the performance counters of the physical nodes.
net use
\\<machinename>\ipc$
/user:<username> <password>
Note: This command needs to be run for each and every node whose performance counters need to be accessed.
Now, start testing and figure out what all do the counters mean!
Some important notes:
Typically for a performance test, you would need to keep track of the following counters:
CPU utilization of each node - try to max this out with you test rig.
Requests / Sec executed - Found at the machine which hosts the rig.
ASP.NET request queue length - To find whether the processor is overloaded and requests keep pouring in.
Total Memory available. - Each node - to find if there are any memory leaks.
Disk usage - In case the web service acccesses some local files - there might be resource contention.
Failed requests and the exception generated.
SOAK Test
: Make sure that you turn off the Worker Process Recycling for the Appliation Pool under which the Web Services is hosted. Else, you'll find that periodically your requests fail with either a 500 error or access denied error!
Do keep track of the CPU utilization of the machine which hosts the test rig and the machine in which the external system simulater has been installed. In case the test rig machine's CPU maxes out before the nodes' CPU, then you will have to think about acquiring another machine and running the tests parallely. In case the simulator's CPU maxes out, think about whether it makes sense at that point in time.
For each and every user load value, make use of the Step Load pattern and let the user count build up to the required number. Do not use the Constant Load Pattern as the Server will get flooded with requests suddenly and this might not capture proper statistics
In case you are stuck with some problem... well..
http://www.live.com
:-)
0 Comments
Blog - Comment List MSDN TechNet
Comments
Loading...