Aug

17

Load Testing - Top Ten

Jesse WoodriffFor this weeks newsletter we tackle a topic pretty close to our hearts here at Awecomm. Application Stress Testing. We have been performing this service for a while now and feel it is an important component of any application deployment. For more reasons why businesses should seriously consider this check out Brent’s post here.

This week I’ll highlight ten very important stress testing components, and describe why they are important.  If you are serious about determining the scalability and performance of your online application check out my list below.

Basically our stress tests are a combination of tests used to gauge the performance of the server and to determine how much load it can sustain before degradation takes place. For example, in one test, our developers built a automated user script that duplicated the login process, application usage, and logout process of a web application. We then ran 2000 simultaneous connections to it for 1 hour and collected as much information as we could. With that, we can determine what type of load the infrastructure
can sustaine.

1. CPU Usage.  A cpu that is continually running at a very high percentage during the test may indicate an application issue whether it’s poorly tuned or designed. This could be lowered once the application has been optimized. If cpu usage has scored high it could also mean that a hardware upgrade is imminent. You can use the Processor:% Processor Time counter in System Monitor to determine this.  Below is a sample screenshot.

1.jpg

2. Disk Usage.  If your physicaldisk: % disk time counter is very high we can then check the current disk queue length counter.  With this we can determine whether what step to take next.  Do we need to upgrade to faster drives?  We can also check #3 below.

3.  Memory.  One thing we can check is the Memory Page Faults/sec counter.  We can then determine whether the disk activity is caused by paging which could mean that the memory usage could be high due to processes using too much memory.
There’s another counter that can determine memory usage that will also reflect the usage that correlates with the possible disk time counters being high.  View a sample screenshot below.

2.jpg

Monitoring SQL

4. SQL Memory.  You need to check how your database server is performing.  We can use the same counters above with some of these sql counters to determine this.  The sqlserver memory manager counter will show the total memory in use by SQL.

5. SQL Connections. We can find out the number of users connected to the sql server using the sqlserver:general statistics\user connections counter.

6. SQL Latches.  SQL uses these to protect actions that don’t need to be locked for the life of a transaction.  When the engine is scanning a page it latches it, reads it and gives it back to the relational engine and then unlatches the page so that it can be used again.  You can monitor the average latch wait time by using the sql server:latches\average latch wait time counter.  If the number of these is high, there could be a resource limitation.

Monitoring IIS

7.  Current Web Connections.  Finding the current IIS web connections is important to understand how this might be related to cpu, and memory usage.  View a sample screenshot below.

3.jpg

8. Not found Errors.  This show’s the number of requests that were reported as HTTP error 404. 

9. ASP Pages Performance. During the testing we can find if there are Errors and how many there are.  ASP Requests whether we find how many have failed or how many requests are timed out could shed light on application or resource issues.

10. ASP.NET Performance. When looking at worker processes and how many are running or how many restarts it’s getting could throw a red flag in which could lead to some investigation.  We can also look at either a single instance or a total for all applications running on the server.

Valuable information can be found after running a load test.  Although this can get quite technical, the data that is gathered is critical to determine where your application, database, or web server stands.   

Resources

Microsoft Performance Baseline
http://technet2.microsoft.com/windowsserver/en/library/9277f422-eb8c-4c14-89b5-9fe09f80fd191033.mspx?mfr=true

SQL Latching
http://msdn2.microsoft.com/en-us/library/Aa224727(SQL.80).aspx 

System Monitor IIS6
http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/3ffd9ede-2bc8-4bdc-871e-9d937f25d6c9.mspx?mfr=true

Leave a Reply