Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

ASP.NET websites under IIS 7.5 (Windows 7) running extremely slow

I've just installed Windows 7 x64 Ultimate on my desktop PC. I installed IIS, Visual Studio 2008, registered ASP.NET, etc.

I have this ASP.NET 3.5 website I'm working on running EXTREMELY slow on this new IIS. On STA and PROD servers (Windows 2003 Server) and on my old XP/IIS 5.1 everything runs smoothly.

A page which usually takes 1-2 seconds to load is taking 8 seconds!!!

I saw this post on IIS forum. It says something about Vista/7 not pooling connections (just to let you know, the website is running locally but it's connecting to a SQL Server 2005 hosted on a remote server).

It seems that it takes a while to "start loading" the page... I mean, I click refresh and it stays for several seconds "Waiting for localhost"... Then when it gets response it loads the whole page normally...

I don't have a clue how to force Win7/IIS7.5 to pool database connections.

EDIT: I've created a new empty ASP.NET web application to see if the problems happens too. The answer is no, it responds fast as it should with an empty default page. Maybe is something related to the DB connection. I will do a further test. It should be a way to fix it...

EDIT 2: Debugging the app I noticed that the delay occurs AFTER the execution of .NET code (Page_Load, etc)... so the delay seems to be somewhere when IIS serves the page to the browser.

like image 844
empz Avatar asked Mar 03 '10 22:03

empz


People also ask

Why is my asp net site so slow?

An IIS or ASP.NET hang can cause your website to have slow page loads, timeouts, or 503 Service Unavailable errors. Hangs can be caused by blocked ASP.NET threads, bad configuration, or request queueing.

How do I run classic ASP in IIS 7?

Installing Classic ASP on Windows Vista or Windows 7 Client In Control Panel, click Programs and Features, and then click Turn Windows Features on or off. Expand Internet Information Services, then World Wide Web Services, then Application Development Features. Select ASP, and then click OK.

How can we avoid long running requests in IIS worker process?

You can use Process Explorer to do this. Go into the Properties of the problematic w3wp.exe process, choose the Threads tab, then select the long running thread and use the Kill button to kill the thread.


4 Answers

For those having the same problem, here's two possible solution.

  • 1) Disabling IPv6 support in Firefox (only for Firefox)

Most of the authors that I found out about suggest this approach as quickest and cleanest solution. What you need to do is basically to open configuration settings in Firefox (about:config) and to change network.dns.disableIPv6 setting to true.

  • 2) Change localhost settings in your hosts file (all browsers)

This came to me as an idea to check where and how can I interfere in IPv6 settings on my machine. I saw one of the comments on above mentioned sources saying that one can get rid of the problem by simply replacing localhost with machine name in the url.

It didn’t take me long to check and see that disabling my IPv6 localhost lookup does the same thing as disabling IPv6 directly in Firefox.

What you need to do is basically to comment / delete this particular line in your hosts file:

#::1             localhost

Note: ::1 notation is IPv6 equivalent of the IPv4 127.0.0.1 lookup address.

I believe the second solution might be more suitable for users who do not want to disable IPv6 in general, and the first one for all others that still do not use IPv6 in their regular work.

like image 192
empz Avatar answered Oct 01 '22 07:10

empz


I was having the same issue: extremely dead slow site performance using IIS 7.5 on Windows 7 64-bit with a Core 2 Duo with 4GB RAM and 3 Application Pool Processes running only 1 website. Here's what I did to get the speed back to IIS, problem solved...

The trick for me was to run IIS using 32-bit workers, as instructed by Microsoft on IIS.net, which you can read here:

http://learn.iis.net/page.aspx/201/32-bit-mode-worker-processes/

Simple solution provided (I don't want to rewrite it here)... Either you can run a 1-line command from the Windows Command Prompt or a 1-line command from Windows PowerShell. I just ran it from the command line (make sure you open Command Line or PowerShell as Administrator -- right-click > Run as Administrator).

Thanks, Marty McGee

like image 21
Marty McGee Avatar answered Oct 01 '22 07:10

Marty McGee


You can try running multiple processes as application pools:

  • Open IIS
  • Click Application Pools
  • Right click the app pool for your app and click Advanced Settings
  • Find the "Maximum Worker Processes" and update it to 3 (or the number of processes you want to allow to run).
like image 44
Russell Avatar answered Sep 29 '22 07:09

Russell


I know the op was running IIS 7.5 and this may not apply to him, but I'm posting this as it might help others running IIS Express 8.0. I had the same problem and none of the IPv6 or hosts file changes worked for me. My asp.net MVC4 project was really slow after hitting F5 to refresh js changes on localhost. It was happening across all browsers - Chrome, FF, and IE. Eventually I discovered that IIS Express 8.0 is extremely slow when serving up js files and seems to be a bug. If I ran iisexpress on the command line and hit F5 I could see each js file took 4 or 5 seconds to load.

I ended up uninstalling IIS 8.0 and installing IIS express 7.5 and straight away the problem was fixed. Here are the steps I followed:

  • Uninstall IIS express 8.0
  • Delete the IISExpress folder (on Win 7 it's in My Documents\IISExpress)
  • Install IIS express 7.5 (Link to IIS Express 7.5 download)

IIS Express 8.0 seems to be installed with VS 2012 so if you had a new install or possibly a service pack update this might upgrade the previous IIS Express version.

like image 23
Ciarán Bruen Avatar answered Oct 01 '22 07:10

Ciarán Bruen