Messen, messen, messen. Rico Mariani sagt das immer, und er hat recht.
Messen Sie req / sec, RAM, CPU, Sessions, etc.
Sie könnten eine Caching-Strategie (Output-Caching, Daten-Caching, Caching-Abhängigkeiten usw.) entwickeln.
Sehen Sie auch, wie es Ihrem SQL Server geht ... Indizes sind ein guter Ausgangspunkt, aber nicht das einzige, was Sie sich anschauen sollten.
Wie viel Datenverkehr kann ein Webserver bewältigen? Was ist der beste Weg zu sehen, ob wir darüber hinaus sind?
Ich habe eine ASP.Net-Anwendung, die ein paar hundert Benutzer hat. Aspekte davon sind relativ prozessorintensiv, aber bis jetzt haben wir es mit nur einem Server gut gemacht, um sowohl SqlServer als auch die Site laufen zu lassen. Es läuft Windows Server 2003, 3,4 GHz mit 3,5 GB RAM.
Aber in letzter Zeit habe ich festgestellt, dass sich die Zeiten verlangsamen, und ich frage mich, wie ich am besten feststellen kann, ob der Server durch die Anwendung überlastet ist oder ob ich etwas tun muss, um die Anwendung zu reparieren (I Ich will nicht wirklich viel Zeit damit verbringen, kleine Optimierungen zu jagen, wenn ich nur zu viel von der Box erwarte).
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 auszuführen und zu prüfen, ob ein bestimmter Teil des Codes vorhanden ist Unzumutbar lange zu laufen. 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, die dem UNIX "Load Average" ähnlich ist, 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 jeden Zeitschlitz haben wollen.)
Überprüfen Sie auch das Offensichtliche, dass Ihnen die Bandbreite nicht ausgeht.
Was Sie brauchen, sind einige Informationen zu Kapazitätsplanung ..
Die Kapazitätsplanung ist der Prozess der Planung für Wachstum und Vorhersage von Spitzennutzungszeiträumen, um die System- und Anwendungskapazitätsanforderungen zu erfüllen. 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.
Auf dieser Hardware sollte eine .NET-Anwendung in der Lage sein, etwa 200-400 Anforderungen pro Sekunde zu bedienen. 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 in dieser Box haben, selbst wenn der SQL Server läuft.
Ohne alle Details zu kennen, würde ich no sagen, Sie werden keine Leistungsverbesserung durch Hinzufügen von Servern feststellen.
Übrigens, wenn Sie nicht den Ausgabe-Cache verwenden, würde ich anfangen dort.