0

Nach dem Durchsuchen Stapelwechsel & zahlreiche MSDN-Artikel für Monate, komme ich in die Community auf der Suche nach Hilfe. Ich bin der IIS-Administrator für meine Organisation & Ich habe ein Problem festgestellt, bei dem, wenn eine Änderung an einer .NET-Anwendung vorgenommen wird, das Laden der Seite sehr lange dauert, wenn eine Anforderung zuerst an die Seite gesendet wird. Wenn ich eine lange Zeit sage, sage ich manchmal zwischen fünf Minuten und einer halben Stunde. Ich habe eine Reihe von Punkten ausprobiert, um das Problem zu beheben. Aber ich glaube, dass irgendwo eine Konfigurationseinstellung verborgen ist, die das Problem verursacht. Sobald die Seite einmal geladen ist, ist die Ladezeit normal. Es scheint unabhängig von der Anwendung zu passieren, obwohl einige länger dauern als andere. Es ist auch nicht konsistent. Manchmal dauert es sieben Minuten, um nach einer Änderung zu laden. Die gleiche Anwendung kann 17 Minuten dauern, um das nächste Mal, wenn eine Änderung vorgenommen wird, zu laden ... Die Änderungen sind normalerweise sehr geringfügig, eine neue Bildbox wird eingezogen oder eine neue Verknüpfung hinzugefügt. Nichts Besonderes..NET-Anwendungen laden extrem langsam in IIS-8 Windows Server 2012

Wenn eine App dauert zwanzig Sekunden auf eine Minute, um das erste Mal zu laden, sind wir nicht besorgt. Aber die Ladezeit von zehn, fünfzehn Minuten, manchmal auch einer halben Stunde ist nicht akzeptabel.

Das Problem tritt unabhängig davon auf, ob es sich um eine statische Inhaltsanwendung handelt oder ob es eine Datenquelle erreicht. Alle Verbindungen zu einer Datenquelle werden auf App-Ebene konfiguriert. Wir verwenden das nur für eine Handvoll von Apps. & Ich habe überprüft, dass die Verbindungsinformationen in der web.config für die Apps gültig sind, die eine Datenquelle erreichen. Wir verwenden die Windows-Authentifizierung für jede App.

Wir führen eine dreistufige Umgebung, alle unter Windows Server 2012 R2 Standard mit 16 GB RAM & eine Multicore-CPU-Setup. Wir führen IIS 8.5 unter .NET 4.0.30319 aus. Der App-Pool nutzt die integrierte Pipeline mit Unterstützung für 32-Bit-Apps (welche die Apps sind). Dies sind VMware-Hosts. Der Server wird einmal pro Woche neu gestartet. Das Problem tritt auf unseren Test- oder Entwicklungsservern nicht auf. Nur unser Produktionsserver. Es spielt keine Rolle, zu welcher Tageszeit die Änderung vorgenommen wird.

Im Dezember 2016 portierte ich alle .NET-Anwendungen von einem älteren Windows 2003-System mit IIS 6.0 auf das neue Windows 2012-System. Während wir mit dem Entwickler gearbeitet haben, um fest codierte Hostnamen in den Apps zu ändern, mussten wir letztendlich einen CNAME-Host-Datensatz installieren, um den alten Hostnamen auf den neuen umzuleiten. Das Problem scheint zu dieser Zeit begonnen zu haben.

Ein Problem, das mir aufgefallen ist, war, dass der Entwickler alle Apps im Debug-Modus kompiliert hat. Wir haben diese Einstellung auf "false" geändert, was in einigen Fällen jedoch nur geringfügig geholfen hat.

Ich habe versucht, die folgende auch:

  • segregierten eine gegebene App & den App-Pool auf immer laufen. Außerdem wurde versucht, die Anwendungspoolidentität so zu ändern, dass sie als Netzwerkdienst oder als Dienstkontobenutzer ausgeführt wird.

  • Hinzufügen der Anwendungsinitialisierungsrolle & Konfigurieren in IIS zum Ausführen des App-Pools & aktiviertes Preload auf App-Ebene. - Ich habe das bestätigt, als ich gesehen habe, dass es nichts geändert hat.

  • Ich habe alle Rollen zwischen unseren Test/Dev-Servern geheiratet, wo das Problem mit dem der Produktion nicht auftritt.

  • Deaktiviertes Leerlauf-Zeitlimit auf App-Pool-Ebene.

  • Vergleich Einstellungen zwischen Test & Produktion in Bezug auf die Kompilierungseinstellungen, Timeouts usw.

Keine dieser einen Unterschied vorgenommenen Änderungen. Ich kann nichts finden, das die Test-/dev-Kästen unterscheidet, in denen kein Problem & der Produktion problematische Server ist. Bitte lassen Sie mich wissen, welche zusätzlichen Informationen Sie benötigen & Ich schätze die Hilfe im Voraus!

Danke, Mike

Antwort

0

Wir haben das Problem gefunden. Unsere AV-Software war der Schuldige. Speziell Trend Micro Deep Security.

Wenn eine Anfrage gemacht wurde & das Programm kompilieren im temporären Bereich (C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ temporäre ASP.NET-Dateien) - Ich bemerkte, es schien zu nehmen eine sehr lange Zeit für die Dateien zu bauen. Pre-Compiling sah das gleiche Verhalten. Ich habe unseren LAN-Administrator gebeten, eine Ausnahme für diesen bestimmten Ordner hinzuzufügen. Sobald dies erledigt ist, dauert es nur 5-10 Sekunden beim ersten Laden, was akzeptabel ist. Nochmals vielen Dank für Ihre Eingabe.

0

Sie möchten, dass Ihre Seiten vorzukompilieren, damit sie nicht bei der ersten Ausführung kompiliert tun bekommen. IIRC es ist nur ein einfacher Zusatz web.config.

https://msdn.microsoft.com/en-us/library/bb398860.aspx

Obwohl ehrlich zu sein, kompilieren Zeiten von 5 Minuten pro Seite scheint, wie es ein größeres Problem los ist. Ich habe noch nie gesehen, dass eine neue aspx-Kompilierung länger als ein paar Sekunden dauert.

+0

"Das Problem tritt auf, unabhängig davon, ob es eine statische Inhaltsanwendung ist oder nicht" auch die stundenlange Wartezeit zeigt an, dass dies nicht das Problem ist. Ihr Server wird abgespritzt, sie müssen es wegblasen und alles neu installieren, vielleicht werfen sie es in den verdammten Mülleimer und bekommen einen besseren Server. – Will

+1

@Will ich gebe zu, ich habe nur seine 8 Absätze überflogen. –

+0

Sorry für die lange Post, wollte nur so gründlich wie möglich sein. Danke für den bisherigen Input. Alle Seiten laufen gut nach dem ersten Laden - ich weiß nicht, dass der Server komplett abgespritzt ist - obwohl, wenn ich die Möglichkeit für einen erneuten Build von den höheren Ups bekomme, diese Option genommen wird. – mmostwill

0

Die Antwort von Neil N macht Sinn, aber ich würde auf jeden Fall überprüfen, ob diese Einstellung für alle Ihre Server gleich ist.

Wenn das nicht der Übeltäter ist, würde mein nächster Halt definitiv den Abschnitt "Anwendung" der Ereignisanzeige betrachten. Es könnte einige sinnvolle Warnungen geben, die Ihnen helfen, näher an die Ursache des Problems zu kommen.