IIS7 - only serves up one page at a time. It's a making me crAzY!

后端 未结 8 1287
梦如初夏
梦如初夏 2020-12-05 08:25

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.

相关标签:
8条回答
  • 2020-12-05 08:35

    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.

    0 讨论(0)
  • Ensure that asp.net is configured to use more than 1 worker thread. This msdn article explains how to set this configuration option.

    0 讨论(0)
  • 2020-12-05 08:41

    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.

    0 讨论(0)
  • 2020-12-05 08:43

    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.

    0 讨论(0)
  • 2020-12-05 08:44

    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.

    0 讨论(0)
  • 2020-12-05 08:46

    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

    0 讨论(0)
提交回复
热议问题