IIS7 funktioniert nach 5 Anfragen nicht mehr

8

Hier ist mein Problem:

Ich wurde gerade auf ein riesiges asp.net C # -Projekt gebracht und ich wurde damit beauftragt, einige Leistungsprobleme zu beheben (nicht mein Spezialgebiet). Genauer gesagt reagiert der Webserver nach 5 - 7 Weiterleitungen / Ajaxaufrufen nicht mehr und die ganze Seite (und eventuell der Browser) friert ein.

Ich glaube nicht, dass dies ein Coding-Problem ist, da ich Breakpoints auf einigen Seiten eingerichtet habe (Page_Load-Methode) und nach den 5 Anfragen die Breakpoints nicht erreicht habe.

Ich glaube nicht, dass dies mit diesem Problem , da ich die maximalen Verbindungen pro Parameter des Browsers erhöht habe, und ich habe das gleiche Verhalten. Nach diesen 5 Anfragen in einem Browser IE funktioniert die Anwendung auch nicht mehr in FF.

Dies ist kein Ressourcenproblem, da der w3wp.exe-Prozess niemals 500 MB Speicher überschreitet.

Eine Sache, die ich bei der Verwendung von Fiddler und anderen Tools zur Überwachung der Anfragen bemerkt habe, ist, dass der Server beim Laden von Bilddateien (png, jpg) sehr lange braucht. Ich weiß nicht, ob das relevant ist.

Ich habe die Verfolgung fehlgeschlagener Anfragen auf dem Server aktiviert, und das einzige, was mir aufgefallen ist, ist, dass einige Anfragen mit einem Fehler von 401 fehlschlagen, auch wenn ich die anonyme Authentifizierung aktiviert habe. Hier ist die genaue Nachricht

%Vor%

Diese Nachricht wird manchmal mit ModuleName: ScriptModule

ausgelöst

Ich habe schon zwei Tage mit diesem Ding verschwendet und mir gehen die Ideen aus, so dass irgendwelche Vorschläge geschätzt werden würden.

    
Constantin 19.01.2012, 16:31
quelle

4 Antworten

1

Ich habe das Problem endlich gelöst. Hier ist was ich getan habe:

  1. Ich habe mit IIS-Einstellungen und dem Recycling von App_Pool experimentiert und festgestellt, dass mit der Art und Weise, wie Anfragen bearbeitet werden, nichts passiert.

  2. Ich habe mich auf das Modul Http.sys konzentriert und festgestellt, dass in den Protokolldateien viele Fehler Timer_ConnectionIdle und Client_Reset aufgetreten sind.

  3. Nach einigen weiteren Experimenten und vielen Google-Suchen habe ich zufällig diese antwort und es hat mein Problem gelöst. Wie die Antwort vermuten lässt, wurde das Problem dadurch verursacht, dass das AVG-Antivirenprogramm installiert und auf dem Server falsch konfiguriert wurde.

Danke für die Hilfe und Anregungen.

    
Constantin 06.02.2012, 10:03
quelle
4

Wie bei jedem großen generischen Problem ist es am besten, das Problem zu diagnostizieren, indem Sie herausfinden, wie Sie das Problem in kleinere Teile aufteilen, wie Sie die Probleme hypothetisieren und wie Sie Ihre Hypothesen validieren oder invalidieren können. Meine erste Neigung wäre die Hypothese, dass die serverseitigen Prozesse in diesem Fall eine lange Zeit benötigen, was dazu führt, dass Ihre Client-Anfragen blockiert werden, was das Ganze als eingefroren erscheinen lässt.

Von dort würde ich versuchen, die lang laufenden Server-Side-Prozesse zu replizieren, indem ich isolierte clientseitige Tests erstelle - vielleicht würden die gleichen URLs einzeln getestet, wenn die URLs HTTP-gets wären. Wenn es sich um HTTP-Posts handelte, würde ich ein isoliertes Testformular erstellen, wenn möglich, um zu sehen, was mit jeder Anfrage passiert. Wenn ein lang laufender serverseitiger Prozess gefunden wird, haben Sie einen Startpunkt.

Wenn es lange keine serverseitigen Prozesse gibt, kann es sich um JavaScript / Client-seitige Coding-Probleme handeln, die untersucht werden müssen. Aber wenn Sie ein großes, unbekanntes Projekt bearbeiten, ist es am besten, herauszufinden, wie Sie das Problem in kleinere Komponenten aufteilen können, die dann getestet werden können.

    
Shan Plourde 19.01.2012 16:44
quelle
0

Wenn es Ajax-Aufrufe sind, die Ihren Browser zum Einfrieren veranlassen, stellen Sie sicher, dass sie nicht blocking ajax-Aufrufe sind.

    
Matthew 19.01.2012 16:39
quelle
0

Einfach an Shans Antwort anhängen, was ein guter ist.

Zunächst gibt es offensichtlich ein Code-Problem, da dies für IIS keineswegs "normales" Verhalten ist.

Das heißt, Sie müssen es isolieren, wie Shan angezeigt hat. Wenn zum Beispiel der Server selbst keine Verbindungen mehr akzeptiert, können wir Javascript als Quelle des Problems ziemlich gut eliminieren und es als nur ein Symptom bezeichnen.

Wenn ein Worker-Prozess in den Space springt, liegt dies in der Regel an einer Endlosschleife oder an einem Problem, bei dem mehrere Threads versuchen, dieselbe Ressource zu sperren. Ich wette, wenn Sie es lange genug laufen lassen IIS selbst Timeout, töten und starten Sie den Prozess neu.

In diesem Sinne möchten Sie nach einer beliebigen Art von Multithread-Müll suchen (was ich Ihnen wärmstens empfehlen kann nicht in einem Webserver) oder nach allem, was auf eine enge Endlosschleife hinweist. Eine Schleife wird offensichtlich, wenn Sie die Anfragen einzeln ausführen. Ein Multi-Threading-Problem wird nur angezeigt, wenn Sie eine Kollision haben.

Führen Sie verschiedene Leistungsindikatoren auf dem Webserver aus. Wenn es einmal blockiert ist, lass es für eine Weile so sitzen. Sobald IIS seinen eigenen Reset für den Arbeitsprozess durchführt, suchen Sie im Ereignisprotokoll nach Indikatoren.

    
NotMe 19.01.2012 16:52
quelle

Tags und Links