Ever ask that question? It's not necessarily the easiest question to answer if you're a head down coder type. Not that there's anything wrong with head down coder types.
Recently a customer was experiencing server unresponsiveness though when opening up the task manager on the web server would see the CPU at next to 0 utilization and memory somewhat stable. So when this happened I asked for a bit more information the web server in question in the way of what was running on it and what database servers it hooked into.
I was told it was running ColdFusion apps, ASP.NET apps, and Reporting Services... UGGGGG!!!!
To be able to see what is happening on the server there are counters that need to be implemented on the various services in question.
ColdFusion version 7 can be monitored with the JRun Metrics and you can find information on it here http://www.bpurcell.org/blog/index.cfm?mode=entry&entry=991 on Brandon Purcell's blog.
ASP.NET can be monitored with a custom counter, an article on this topic is located here http://msdn2.microsoft.com/en-us/library/ms979194.aspx.
These approaches will identify what process is blocking up the web server. The true caveat in all instances when CPU utilization is low and server memory stable points to db or possibly network issues. In most cases a db will be pegged due to long running sql statements and it is important to monitor these machines while troubleshooting the cause of the bottleneck.
If the database is the culprit to clogging the server than in measures can be taken to find out which currently running sql statements are causing the problems. A tool I have used in that past that does an excellent job of monitoring sessions and currently executing sql statements (ORACLE) is TOAD with its DBA module. If the user account you are utilizing gives you the ability to run system queries than this module will show you why the server is doing some heavy lifting. There are similar feature in SQL Server, I will post these shortly.
In closing it is important to understand the demands an application may place on server hardware and while keeping that in mind look to incorporate or segregate the application in an existing environment.