Seltsames IIS-Verhalten. Es sendet Daten sehr langsam an lokale Anfragen

602
Hugo Delsing

Wir haben ein C# mvcProjekt, das auf mehreren Computern gut läuft. Auf einem PC habe ich ein seltsames Problem und zuerst dachte ich, dass es sich auf die Codierung bezog, daher eine Frage zu stackoverflow . Nach einigen Tests scheint es sich jedoch nicht um eine Codierung zu handeln.

Das Projekt läuft auf einem lokalen IIS unter Windows 10 und verfügt über mehrere Controller (Seiten). Wenn ich auf demselben Computer zur Startseite (und zu mehreren anderen Seiten) browse, dauert es jedes Mal etwa 2 Minuten, um das erste Byte zu erhalten. Andere Seiten des Projekts laufen schnell ab.

Natürlich dachte ich, es liegt am Code auf diesen Seiten, aber beim Debuggen zeigten sich alle Seiten (schnell und langsam Application_PreSendRequestContent) innerhalb von 100 ms an das letzte Ereignis ( ). Danach sollte es mit dem Senden von Daten beginnen.

Wenn ich von einem anderen Computer aus über ein Netzwerk auf diese Website zugreifen kann, funktioniert es ordnungsgemäß. Selbst wenn derselbe Computer noch auf das erste Byte der Homepage wartet, kann der andere Computer dieselbe Seite direkt anfordern.

Überblick:

  • PC 1: Windows 10 / IIS
  • PC 1: Homepage auf PC1 anfordern: 2 Minuten bis zum ersten Byte
  • PC 1: Seite X1 auf PC1 anfordern: 2 Minuten bis zum ersten Byte
  • PC 1: Seite X2 auf PC1 anfordern: sofortiges Ergebnis
  • PC 1: Seite X3 auf PC1 anfordern: sofortiges Ergebnis

  • PC 1: Homepage anfordern und auf erstes Byte warten

  • PC 2: Homepage auf PC1 anfordern: sofortiges Ergebnis
  • PC 3: Homepage auf PC1 anfordern: sofortiges Ergebnis
  • PC 1: Endlich die Homepage nach 2 Minuten erhalten.

Was ich ausgeschlossen habe:

  • Coding-Problem: wäre überall langsam
  • IIS-Problem: wäre überall langsam
  • Browserproblem: tritt in Firefox, Chrome und Edge auf
  • Parsing-Problem: Inhaltstyp ist Text / Plain
  • DNS-Problem: Der Zugriff über eine IP-Adresse hat das gleiche Problem

Ich habe keine Ahnung, wonach ich sonst suchen kann.

1
Wie sieht die Netzwerkeinrichtung aus? Verwenden Sie eine Art von Authentifizierung, die Zeit in Anspruch nehmen kann? Welche Adressen verwenden Sie, um lokal auf die Site zuzugreifen? Nach Ihrer Beschreibung scheint es eher selten zu sein, dass das Problem lokal vorliegt, da es manchmal vorkommt, dass es nicht auftritt. Gibt es eine besondere Belastung der Maschine? Welche anderen Prozesse läuft es? Ist diese Website die einzige Website, die darauf gehostet wird? Seth vor 7 Jahren 0
Es passiert immer auf einigen Seiten (immer gleich) und auf anderen Seiten (auch immer gleich). Alles wird jedoch vor "Application_PreSendRequestContent" (Authentifizierung, Datenbank, Sitzungen usw.) verarbeitet und trifft diesen Punkt nach 100 ms. Siehe [Lebenszyklus von ASP.NET-Anwendungen] (https://msdn.microsoft.com/en-us/library/bb470252.aspx). Es ist eine Entwicklungsmaschine, die sonst wenig macht. Der lokale Zugriff mit `127.0.0.1` oder` 192.168.190.40` ist langsam, der Zugriff auf `192.168.190.40` von einem anderen PC aus ist schnell. Hugo Delsing vor 7 Jahren 0
Wechseln diese Seiten zwischen den Sitzungen oder sind sie eigentlich immer gleich? Was ist mit dem Speicherverbrauch der Maschine? Haben Sie überprüft, dass der Anwendungspool nicht recycelt wird, wenn Sie diese Seiten aufrufen? Wenn sich die Seiten nicht ändern, ist der Anruf ebenfalls schnell, wenn Sie sie zuerst von einem Remote-Standort statt von der lokalen Maschine anfordern (dh Sie fordern X1 von PC2 an, bevor Sie sie von PC1 anfordern)? Seth vor 7 Jahren 0
Es ist kein Recyclingproblem. Jedes Mal, wenn ich lokal anrufe, hat es eine Zeitüberschreitung von 2 Minuten. Jedes Mal, wenn ich aus der Ferne anrufe, wird es sofort geladen. Beim ersten Laden ist der entfernte Standort beim Start offensichtlich langsamer, danach aber schnell. Egal ob ich die Seite 10 oder 100 mal anrufe. Wenn ich die Seite nach 50 Remote-Anrufen lokal anrufe, ist Local noch langsam und Remote ist immer noch schnell Hugo Delsing vor 7 Jahren 0
Es gibt keine Änderungen zwischen den Seiten und ich habe die Authentifizierung für alle deaktiviert, um sicherzustellen, dass alle dieselbe Anfrage erhalten. Sowohl local als auch remote schlagen in derselben Zeit den `PreSendRequestContent` ab, danach aber sofort für remote und timeout für local Hugo Delsing vor 7 Jahren 0
Nach eigenen Beispielen ist es nicht immer langsam "PC 1: Seite X2 auf PC1 anfordern: sofortiges Ergebnis". Wenn Sie eine lokale Ressource anfordern, ist es wahrscheinlicher, dass es sich um ein Problem mit der Codierung / IIS / Firewall-Konfiguration handelt. Siehe auch [Laufende Sites auf "localhost" ist extrem langsam] (http://stackoverflow.com/questions/2386299/running-sites-on-localhost-is-extremely-slow). Einer der Vorschläge besteht darin, Ihre Proxy-Einstellungen zu überprüfen, da Sie die Anforderung möglicherweise abhängig von der Konfiguration über Ihren Proxy stellen. Selbst wenn Sie immer darauf bestehen, dass das Ereignis ausgelöst wird, heißt das nicht, dass es nicht danach hängen bleiben kann Seth vor 7 Jahren 0
Die Seite X2 ist immer schnell (lokal) und die Homepage ist zum Beispiel immer langsam. Egal ob es das erste oder zehnte Mal ist. Da einige Seiten schnell sind, schließe ich Probleme mit der Firewall / DNS / Proxy aus, da diese Dinge auf Seitenebene nicht funktionieren. Ich habe die Codierung ausgeschlossen, da auf derselben Seite, auf demselben Server, der Remote-Zugriff schnell ist. Mein Code ändert sich nicht bei lokalen / Remote-Anfragen. Offensichtlich ist es nach diesem Ereignis stecken geblieben, aber alle Codierungen nach diesem Ereignis sind außerhalb meiner Reichweite, da es Standard-.NET-Code oder IIS ist. Ich werde auf Ihren Link für weitere Vorschläge schauen, danke. Hugo Delsing vor 7 Jahren 0
Wenn Sie bestimmte Seiten haben, die immer schnell sind, und bestimmte Seiten, die immer langsam sind, wenn Sie versuchen, lokal auf sie zuzugreifen, sollten Sie prüfen, was diese Seiten enthalten und was im Code passiert. Vielleicht machen Sie Identitätswechsel, eine Art Zwischenspeicherung oder IP-Zugriffsprüfung. Vielleicht unterscheiden sie sich wirklich in der Größe. Sie sollten auch die Registerkarte "Netzwerk" Ihres bevorzugten Browsers aktivieren, da dies möglicherweise weitere Informationen enthält. Wenn Sie keine Reaktion sehen, ist es wirklich serverseitig, aber vielleicht ist es nur langsam? Vielleicht machst du AJAX-Anfragen für die FE? Viel Glück bei der weiteren Diagnose. Seth vor 7 Jahren 0
Es stellte sich heraus, dass es sich um die Sophos Antivirus-Software handelt. Ich habe es deaktiviert und es war schnell für alle Seiten. Ich fand es als [Antwort] (http://stackoverflow.com/a/27015698/434949) auf Ihrem Link. Danke @Seth Hugo Delsing vor 7 Jahren 1
Schön, dass es geklappt hat. Wenn es geholfen hat, diese Antwort zu erwägen, wenn Sie es nicht bereits getan haben. Ansonsten ignorieren Sie diesen Kommentar. Seth vor 7 Jahren 0

0 Antworten auf die Frage