2008-09-12 7 views
8

Wie viel Datenverkehr kann ein Webserver bewältigen? Was ist der beste Weg zu sehen, ob wir darüber hinaus sind?Die beste Methode, um die Anzahl der benötigten Server zu ermitteln

Ich habe eine ASP.Net-Anwendung, die ein paar hundert Benutzer hat. Aspekte davon sind ziemlich prozessorintensiv, aber bisher haben wir es mit nur einem Server gut gemacht, sowohl SqlServer als auch die Site zu betreiben. Es läuft Windows Server 2003, 3,4 GHz mit 3,5 GB RAM.

Aber in letzter Zeit habe ich festgestellt, verlangsamt zu verschiedenen Zeiten, und ich fragte mich, was der beste Weg ist zu bestimmen, ob der Server durch die Verwendung der Anwendung überlastet ist oder wenn ich etwas tun muss, um die Anwendung zu beheben (Ich möchte nicht wirklich viel Zeit darauf verwenden, kleine Optimierungen zu finden, wenn ich nur zu viel von der Box erwarte).

Antwort

7

Was Sie brauchen, ist etwas Informationen über Capacity Planning ..

Kapazitätsplanung der Prozess der Planung für Wachstum und Prognose Spitzennutzungszeiten ist, um System- und Anwendungskapazitätsanforderungen gerecht zu werden. Es beinhaltet umfangreiche Leistungstests, um die Ressourcennutzung und den Transaktionsdurchsatz der Anwendung unter Last zu ermitteln. Zuerst messen Sie die Anzahl der Besucher, die die Site aktuell empfängt und wie viel Nachfrage die einzelnen Benutzer auf dem Server stellen. Anschließend berechnen Sie die Computerressourcen (CPU, RAM, Festplattenspeicher und Netzwerkbandbreite), die für die aktuelle und zukünftige Unterstützung erforderlich sind Nutzungsstufen.

1

Wenn Sie Zugriff auf einige Profiling-Tools haben (z. B. in der Team Suite-Edition von Visual Studio), können Sie versuchen, einen Testserver einzurichten und einige synthetische Anfragen dagegen auszuführen und festzustellen, ob es einen bestimmten Teil des Code, der unangemessen lange dauert. Sie sollten wahrscheinlich einige Diagramme der CPU- und Speicherauslastung im Laufe der Zeit überprüfen, bevor Sie dies tun, um zu sehen, ob es das überhaupt sein kann. (Eine Zahl ähnlich dem UNIX "Load Average" könnte eine nützliche Metrik sein, ich weiß nicht, ob Windows so etwas hat. Grundsätzlich die durchschnittliche Anzahl von Threads, die CPU-Zeit für jede Zeitscheibe haben wollen.)

Überprüfen Sie auch das Offensichtliche, dass Ihnen die Bandbreite nicht ausgeht.

0

Auf dieser Hardware sollte eine .NET-Anwendung etwa 200-400 Anforderungen pro Sekunde verarbeiten können. Wenn Sie nur ein paar hundert Benutzer haben, bezweifle ich, dass Sie sogar 2 Anfragen pro Sekunde sehen, also denke ich, dass Sie eine Menge Kapazität auf dieser Box haben, selbst wenn SQL Server läuft.

Ohne alle Details zu kennen, würde ich sagen keine, Sie sehen keine Leistungsverbesserung durch Hinzufügen von Servern.

Übrigens, wenn Sie nicht die Output Cache verwenden, würde ich dort anfangen.

1

Messen, messen, messen. Rico Mariani sagt das immer, und er hat Recht.

Maßnahme req/sec, RAM, CPU, Sitzungen etc.

Sie können mit einem Caching-Strategie kommen (Output-Caching, Daten-Caching, Caching Abhängigkeiten, und so weiter.)

Siehe auch wie es Ihrem SQL Server geht ... Indizes sind ein guter Ausgangspunkt, aber nicht das einzige, was Sie sich anschauen sollten.