views:

305

answers:

1

I am setting up windows performance monitor to log activity on a web server while running MS Web application stress tool. Which counters should I choose to give me the best picture of where I have bottlenecks, slow performance and response etc?

cheers

+1  A: 

The windows performance tool, perfmon, is probably not going to tell you a lot about where your bottlenecks are, but it can help you determine the impact of the load you are putting on the system and if run long enough, is likely to tell you if you have resource leaks.

My baseline items: All Process items for the process Processor Memory

For sampling period, I tend to target 100-200 samples for the length of the expected run.

The next set of questions will be very specific to your application to determine what you need: .Net and ASP objects if they apply Network objects if you suspect problems on the network interface Disk IO if you suspect or want to investigate impact how much disk activity is going on at different loads.

As important as collecting the data is the time to review. For first time views, it's worth taking an hour or two just to bring up each counter and notice the trends. Once you've become more experienced with the counters you can focus in on specific items. Things I tend to always review for leaks: handle counts, threads, private memory, free system page table entries, data base connection counts if you can get them.

Don't forget to look at the whole system and not just your web server. Application issues can show up on any of the linked (directly or indirectly) resources. Just because something else fails or is slow doesn't mean it wasn't caused by your application.

Jim Rush
Great, thanks Jim.
undefined
One of the aspects I want to test is writing a file - A PHP script running on the server receives a bytearray from Flash running in users browser and this data is written to a file. To monitor this process it looks like IO Data Bytes/sec would be a good counter? are there any others?
undefined
I think for a PHP script, that is probably the best option. You should really see if embedded performance tracking code in your script and periodically dumping them to a log file or other repository. Your own application logic is usually the best place to get the most useful performance data.
Jim Rush
You said "I tend to target 100-200 samples for the length of the expected run" - can you explain this further please, what is a sample in this case?
undefined
When working with perfmon and collecting large amounts of data points, the files can get large and then roll. When looking for most leak issues or gaining high level performance characteristics, I find 100-200 samples to be a good balance of enough data to see trends, but not so much data that it becomes difficult to use.
Jim Rush