views:

671

answers:

5

I would appreciate any advice regarding tools and practices I could use to confirm my recently completed website is performing correctly.

Although I am confident the code is not producing errors and is functionally operating as it should, I have little understanding of how to identify IIS, SQL Server and Windows performance/concurrency issues. For example if the website was briefly hit by a huge deluge of traffic, how would I be aware that event had ever happened and how would I know whether the website coped with it.

The website was written using ASP.NET 2.0 and C# running on Windows 2003 R2 Standard Edition, SQL Server 2005 Workgroup Edition and IIS 6.

+1  A: 

You can use a load generating tool like WebLoad to capture and then replay (with possible variations through scripting) user interactions with your application's UI with lots of threads and connections.

Assaf Lavie
I will look into WebLoad. Thanks.
Chris Driver
+1  A: 

As mentioned, load generation tools are quite helpful. One thing you can add for the database side is to use SQL Tracing. Setup a test plan with very specific steps, and as you step through your plan, trace the SQL that is running on the server.

This way, you can identify if certain actions are causing unnecessary/duplicate database calls. Also, you may discover very large and non-performant queries being run for very simple actions.

Jay S
I believe that SQL Trace is part of SQL Server Profiler which (rather annoyingly) is not included with SQL Server 2005 Workgroup Edition. Aside from that, a good suggestion :)
Chris Driver
+1  A: 

For SQL Server use the sys.dm_exec_requests DMV and check for CPU usage, reads, writes, blocking etc etc

select blocking_session_id,wait_type,* 
from sys.dm_exec_requests
SQLMenace
Good suggestion, many thanks.
Chris Driver
+1  A: 

Consider using a logging mechanism that also raises alerts, so when a database call takes too long, indicating a high server load, the logger raises a warning. Check out log4net.

Regarding tools and practises, I recommend badboy and jmeter as tools for load testing your site. Badboy is simple and can generate urls that may also be used in jmeter. The latter does a very good job load testing your site. Do tests that run over a long period and use different hardware setups to see how adding more web/app servers affect performance.

Also, check out PerfMon, a tool that lets you monitor a local or remote Windows server regarding contention rate, cpu load and so on.

Marcus
Cheers Marcus, very helpful.
Chris Driver
A: 

Any error which make you application fall over will be caught and shown in the event log.

For making sure the site is still up and running i would recomend a remote monitoring something like http://site24x7.com which can send you a email / text alert if there is a problem.

TheAlbear