I’ve been working on an ASP.Net solution which has a slow performance issues
and it has got me baffled.

 

Problem:

The production server randomly slows down when serving asp.net requests and
even times out. 

 

System architecture:

The solution is hosted on a dedicated box which is running VmWares ESXi with
4 VM servers sitting on it (1 per core). Each VM is on its own network.

All network communication is done through a dedicated hardware firewall,
even between VM’s (unfortunately the auditor has to have it this way).

Database is on 1 VM while another has the web server.

ASP.Net is v4 running on IIS 7.5 while database is SQL Server 2008R2 all on
top of Windows Server 2008 R2

 

Analysis to date:

I’ve run a profiler over the solution and so far come up with nothing that
really needs to be optimised.

Our staging environment is running the same way as our production system
architecture minus the hardware firewall and has a lot lower hardware specs
but performs better than the production environment. When I’m talking
slower, I’m talking ¼ of the memory and a 7 year old CPU.

Production IIS logs show some randomly high request execution times.

 

Theories to date:

ESXi is doing something weird and causing VM’s to run slow.

Firewall is blocking requests randomly or is having performance issues,
although I don’t see it.

IIS is randomly running slow.

Sql Server is randomly running slow

 

 

My questions:

What would Windows performance counters would you watch? Besides the typical
CPU, Disk, memory and ASP.Net 4.0 counters?

Does the IIS logs request execution times include the time to send the
network data? Eg. From time of socket open to time of socket closed? Or is
it just the pipeline without the TCP time included – eg. Serving a straight
html file would just really be time to read the file from disk.

What else would you look at?

 

 

------

Michael Lyons

Reply via email to