Situation: Classic ASP application, using a custom Application Pool. Default settings.
On some IIS7 machines, IIS decides to serve only one page at a time.
Are you sure you don't have a dependency in your code which is causing the deadlock. I've seen this before where logging, sql connections etc creates a dependency. Use perfmon and check the hard disk read/write queue, memory read/write queue to see if things are backing up.
I would highly recommend Tess Ferrandez's (ASP.NET Escalation Engineer - Microsoft) blog for lots in insights and way to find out what is happening. Tess has forgotten more about this stuff than most people will ever know.
I think your problem is not IIS related but something in your app, probably in your ActiveX component. Make sure you clean up after your ActiveX component. Here's a piece of code I use to clean up after using Excel (Another Com component). Remember Com is not managed.
Private Sub ShutDownExcel()
If objExcel IsNot Nothing Then
objExcel.DisplayAlerts = True
objExcel.Quit()
System.Runtime.InteropServices.Marshal.ReleaseComObject(objExcel)
objExcel = Nothing
End If
' Clean up memory so Excel can shut down.
GC.Collect()
GC.WaitForPendingFinalizers()
' The GC needs to be called twice in order to get the
' Finalizers called - the first time in, it simply makes
' a list of what is to be finalized, the second time in,
' it actually the finalizing. Only then will the
' object do its automatic ReleaseComObject.
GC.Collect()
GC.WaitForPendingFinalizers()
End Sub
Hope this helps.
Ensure that asp.net is configured to use more than 1 worker thread. This msdn article explains how to set this configuration option.
In IIS manager click on the application in the tree.
Double click ASP under the IIS section.
Expand "Debugging Properties"
Ensure both "Enable Client-side Debugging" and "Enable Server-side debugging" are set to false.
When debugging is enabled ASP is limited to processing one request at a time in a single threaded manner.
First of all: Make sure you test this with multiple clients. A single computer makes only 2 HTTP requests at the same time to the same server (IP adress). (This is an RFC speficiation.)
If that does not resolve your problem, take a look in IIS7 -> ASP -> Services -> COM Plus Properties -> Execute in MTA. Try to set this setting to "True".
Hope this helps.
Just a thought but if you go to the website in IIS, click the Limits... link on the left, what are the connection limits set to? There is both a max bandwidth and max concurrent connections options there.
I would also go to the App Pool and click Advanced Settings... and check the CPU and Memory limits. Possibly even creating a new app pool from scratch with No Managed Code selected to eliminate it.
IIS7 is most certanly multi threaded, so I would guess there is a problem with your app.
You mentioned ActiveX to load a page from same server - maybe this ActiveX isn't free threaded and this causes every page that uses it to run single instance?
BTW: Web Garden - same server useing multiple processes - cannot use inprocess session Web Farm - multiple web servers