0

I originally posted this on StackOverflow but I feel as though the problem lies with the hardware / OS configuration. I'm hoping that someone here has had a similar experience and can offer some advice.

I have deployed a MVC2 application to IIS7.5 running on Windows Server 2008 R2 Standard server (physical machine; Dell R710 w/ plenty of memory). It's connecting to a SQL Server 2008 database (also physical machine; Windows Server 2008 R2 Standard; Dell R710 w/ plenty of memory) and the applications performance is abysmal. It's fairly simple and it's only making a few calls to stored-procedures.

The developer has tested the application running in the debugger on his own workstation (Windows 7, 64-bit; IIS7.5) connecting to the same database back-end. It screams. Loads in the blink of an eye. Running under Server 2008 R2 it takes about 10-15 seconds and it pauses between each call to the DB. I'm run tests in the SQL Server Profiler and the SP's run fast. The performance problem manifests itself when migrated to Server 2008 R2.

What I've tried thus far:

  • disabled firewall
  • rebuilt the application for compatibility mode (either 32 or 64 bit)
  • rebuilt the application specifically for 64-bit
  • configured the server for 32-bit mode worker process
  • disabled tcp-chimney offloading
  • rebuilt the server in desperation

Each of those had no discernible effect on performance.

Any help with diagnosing this performance issue would be appreciated, thank you.

UPDATE 1:

It appears that opening the connection to the database is part of the bottleneck with the subsequent firing of stored procedures also taking a considerable amount of time:

-Open db connection: 5 sec (subsequent connections are cached so they don’t require 5 seconds)

-First sproc : < 1 sec

-Second sproc: 5 sec

-Third sproc: < 1 sec

-Fourth sproc: < 1 sec

-Fifth sproc: 6 sec

JohnyD
  • 1,614
  • 3
  • 20
  • 29

2 Answers2

0

Top-of-head answers:

MVC should be fast on a server.

Any differences in authentication? Client -> IIS or IIS -> SQL? How's it set up?

And are you sure the app is run under IIS 7.5, rather than IIS Express or ASP.Net Development Server?

Reason I'm asking that is that IIS Express and ASP.Net development servers run as the user ID - an authentication problem might not be obvious from there (especially when run locally).

Does it perform badly on the server when run from the console (if that's an option - I wouldn't normally get into disabling loopback checks etc just to get it to work from there, though)?

TristanK
  • 9,073
  • 2
  • 28
  • 39
  • No authentication Client -> IIS. IIS -> SQL is using SQL authentication (username / password) and the account being used is the same on the development machine (Win7) as on the server. The app performs fine when it's run in ASP.NET development server on the development machine (Win7). The bad performance is when it's running under IIS7.5. It runs no quicker when run on the console. I should also add that we've recoded it to use ip addresses and not FQDN's to remove the possibility of a DNS issue. – JohnyD Apr 29 '11 at 13:04
0

I would use Query Express, (a single executable, no installation needed) on the web server. Use the SQL queries that you recorded in SQL Profile with the same SQL authentication as your MVC site.

This allows you to test whether there is a problem with the raw SQL connectivity, and you can take it from there.

Peter Hahndorf
  • 14,058
  • 3
  • 41
  • 58