Frage

ich mit einer Legacy-ASP Klassischen Lösung arbeite, den Lastenausgleich (über externe Hardware ist und eine IIS-Website des Home-Verzeichnis von dem ein UNC-Pfad Man hat mir gesagt, dass die folgenden Probleme mit diesem Setup zur Zeit existieren.:

  1. Wenn Sie einen UNC-Pfad als Home-Verzeichnis verwendet, gibt es einen „Index“ irgendwo in IIS, die „Caches“ bis zu einer bestimmten Menge von Dateien bestimmter Typen, und wenn die Grenze, die standardmäßig auf 50, erreicht ist, nachfolgende Anfragen an Seiten nicht im Cache 404 zurück.
  2. Wenn Sie einen UNC-Pfad als Basisverzeichnis verwenden, wenn die IIS-Website starten, die zuvor genannten „Cache“ beginnt Füllung, die die Site biegt wird IIS, bis die Cache gefüllt ist, was bedeutet, dass große Websites (15.000 ASP-Dateien) bis zu 30 Minuten sind nicht verfügbar für die Zeit nach der IIS-Website gestartet.
  3. Bei Verwendung eines UNC-Pfades als Home-Verzeichnis, wenn mehr als eine bestimmte Anzahl von gleichzeitigen Anfragen auf die Website vorgenommen werden, Windows wird das „Netzwerk BIOS-Befehlslimit pro Server“ erreichen, und alle Anfragen über dem Limit werden warten müssen bis IIS „schließt die Sitzung“ auf den Server. Mir wurde gesagt, die Grenze 100 Dateien und nicht konfigurierbar.

Nun, all das klingt ein bisschen komisch. Wenn ich einen neuen Windows 2003 Server mit den Standardeinstellungen auf, und es verwenden, eine ASP-Classic-Programm mit 15.000 ASP-Dateien zu hosten, eine Freigabe auf einem Server, der als Home-Verzeichnis für die IIS-Website finden Sie unter werde ich tatsächlich laufen in diese Probleme? Und wenn ja, ist es eine Möglichkeit, sie zu begegnen, ohne die Architektur zu ändern?

(Um zu klären, der einzige Grund, der „Load-Balancing“ Wichtig ist, dass Lastausgleich der Grund ist, die Dateien auf einer Freigabe auf einem Server. Wenn kein Lastausgleich benötigt wurde, wird die Dateien auf der lokalen Festplatte sein könnten. )

War es hilfreich?

Lösung

Ja, es ist möglich, aber ja, es kann zu Problemen führen.

Wenn ASP.NET kompiliert ASPX, ASCX und andere Content-Seiten in Baugruppen, erstellt es eine Menge FileSystemWatchers, um die Abhängigkeiten zwischen ihnen zu überwachen, so dass, wenn Dateien zu ändern, es neu kompilieren können. Diese fressen NetBIOS-Ressourcen.

Darüber hinaus jedes Mal, wenn Sie ein File.Exists oder Directory.Exists nennen, oder jede andere Art von IO an die versorgende Pfad der Website, das erhöht die Anforderungen an der NetBIOS als auch begrenzt.

Es ist möglich, die NetBIOS-Grenzen über die Registrierung über die Standardwerte auf einen Punkt zu setzen.

Für einen kleinen Ort, mit relativ wenigen Verzeichnissen und Dateien, können Sie sehr erfolgreich eine UNC-Freigabe ablaufen, weil ASP.NET wird auch weiterhin nach dem Start abzulaufen seine kompilierten Assemblys. Je mehr Verzeichnisse und Dateien, die Sie jedoch hinzufügen, desto wahrscheinlicher Probleme sind bis zu beschneiden.

Wir haben versucht, ein Mammut-Website (Hunderte von Verzeichnissen und ASPX / ASCX-Dateien) ausgeführt wird, und es wäre für ein paar Minuten gut laufen, bis genügend Urls, dass die NetBIOS Grenzen zugegriffen wurden erreicht, und dann in einer Ausnahme alle nachfolgenden Seitenansicht resultierten . Am Ende haben wir gezwungen, eine Robocopy-Publishing-Lösung zu verwenden.

Am Ende müssen Sie testen, um zu sehen, ob Ihre Website ist klein genug und Ihre NetBIOS-Einstellungen sind hoch genug, um effektiv zu laufen. Ich würde vorschlagen, eine Spinne auf einem Testfeld mit, so dass Sie sicher sein können, dass alles, was kompiliert werden könnte oder zugegriffen mindestens einmal ist.

Andere Tipps

Ich bin über Ihre direkte Frage auf die Interaktion zwischen IIS und UNC nicht sicher, aber ich würde auf einer belebten Stelle (etwas beschäftigt genug Lastausgleich erfordern) vorschlagen, dass Sie etwas anderes als eine Dateifreigabe in Betracht ziehen.

Ein asp geladen von IIS über ein Netzwerk (das heißt eine Dateifreigabe) negativ Auswirkungen auf die Leistung leiden (Latenz).

Ich würde vorschlagen, so etwas wie Robocopy mit mit einem zentralen Master alle Lastausgleich Server synchron zu halten. Mit anderen Worten, Implementierung auf einen einzigen Master-Server (oder Single-Master-Standort), dann robocopy die Dateien auf jeden Slave in der Load Balancer Becken.

Dies wird nicht nur die wierd UNC Probleme entfernen Sie beschreiben, aber sollten Sie auch eine schöne Leistungssteigerung geben (durch das Netzwerk zu entfernen treffen, wenn ASP-Seiten laden). Ich würde erwarten, ziemlich schwer Leistung steigert, wenn Sie das getan haben.

Für 3 Antwort können Sie den Befehl Limit Netzwerk BIOS ändern. Es ist eine ziemlich einfache Registrierung bearbeiten fix: http://support.microsoft.com/kb/ 810886 / en-us

Ich habe laufen in diesem speziellen Problem selbst.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top