"Catch All" Server-Side Load Profiling

Windows Performance Monitor is a pretty good bet. It will embed itself as an ActiveX control into a web page, so you can just open it up, and its counters can monitor pretty much every aspect of the server (just as long as it can be represented numerically).

You can monitor remote servers, as as long as the account it's running on has admin privileges over them.

The counters we generally run for visual reference are:

  • ASP.net \ Applications Running
  • ASP.net \ Requests Wait Time
  • Processor \ % Processor Time
  • PhysicalDisk \ Avg. Disk Queue Length
  • Memory \ Avaliable MBytes

There are a bunch of SQL based metrics (wait time, queries per second, avg query run time, etc) that I don't have handy on me right now but it's pretty flexible in its reporting. Same with ASP.net - you can have it report on individual applications, or use the _total counter for all of them.


Look at using SQL Server Profiler and Windows Server performance monitor traces together. SQL Server 2005 allows you to co-relate these two files together. This article describes how to do this well.
In addition to this, If you use the application name= parameter in your SQL Server connection string you can capture this in the Profiler trace & use this as a way of passing information from your asp.net/asp application like what filename is being executed.


You could try commercial tools like BMC AppSight, or if it's .Net based only, AVICode. If you're looking to do this on the cheap, a combination of IIS logs and Perfmon counters would cover your needs.


Hmm. I'm not familiar with one tool that will give you everything but you can accomplish this with a combination of tools.

You mentioned SQL Server, so SQL Profiler is something you should look at to monitor everything going on in your db.

For everything going over Http you should look into Fiddler.

CPU, RAM, and Hard Disk can be monitored via perfmon.exe (built into Windows) or Process Explorer.