Detecting W3WP processor issues using jetBrains dotTrace

Our W3WP process on our production server is constantly high. It is not 100% maximum, but jumps 90% with an honest bit. To help with this, I have profiled a live application using JetBrains dotTrace.

The results were as expected. All slow methods were NHibernate functions that requested our database. My question is whether these slow methods will affect the processor on our web server, since our database server is on a separate machine. Of course, if the database server does some work, then the jsut web server is waiting for a response, and the CPU should not rise?

If so, how do I use dotTrace (or another tool, if necessary) to determine where the processor is used, and not the server, waiting for a response from others?

dotTrace hot spot screenshot alt text

You can see in the screenshot that most of the time is spent completing external HTTP requests. However, this should not affect the CPU usage on the web server I was thinking about.

+6
performance iis nhibernate dottrace
source share
1 answer

It may well be that NHibernate itself does the hard work on your web server and that the database actually does relatively little.

I would recommend running the SQL profiler to make sure that the database actually takes a lot of time on one call (from NHibernate).

I assume that you will see that NHibernate makes many, many calls to the database and then processes them (on your erb server server) and that this is what is responsible for the high processor.

If you have many lazy attempts to join, you may find yourself in a situation where NHibernate makes many calls to the database, receiving data for one request.

+2
source share

All Articles