Finden und beheben Sie 15 Leistungsengpässe

"Engpass" ist ein wunderbar beschreibender Begriff. Es beschreibt eine künstliche Einschränkung irgendeiner Form von Kommunikation, Interaktion oder Übertragung von Informationen. Und man glaubt, dass eine magische Kombination aus Glück, Geld und Einfallsreichtum diesen Engpass überwinden und alle guten Dinge fließen lassen kann.

Das Problem mit Leistungsengpässen besteht darin, dass sie schwer zu identifizieren sind. Ist es die CPU? Das Netzwerk? Ein ungeschicktes Stück Code? Oft ist der offensichtlichste Schuldige tatsächlich etwas Größeres und Mystifizierenderes nachgeschaltet. Und wenn Leistungsrätsel ungelöst bleiben, steht das IT-Management möglicherweise vor der Entscheidung eines Hobson, Unwissenheit zuzugeben und sich Ausreden auszudenken.

Glücklicherweise hilft Erfahrung, wie bei medizinischen Diagnosen oder Detektivarbeit. Basierend auf unseren jahrelangen Erfahrungen und Experimenten haben wir 15 der wahrscheinlichsten Krankheiten - und empfohlenen Abhilfemaßnahmen - gesammelt, um Ihrem IT-Betrieb dabei zu helfen, Leistungsprobleme aufzuspüren und zu beheben.

Einige dieser Engpässe sind offensichtlicher als andere. Höchstwahrscheinlich haben Sie etwas zu Ihren eigenen hinterhältigen Spoilern zu sagen (und wir würden gerne Ihre Geschichten darüber hören). Wir hoffen jedoch, dass wir durch die Identifizierung gängiger Speedkiller in verschiedenen IT-Disziplinen Ihre Suche nach der Schaffung der leistungsstärksten Infrastruktur, die Ihre Ressourcen ermöglichen, beschleunigen können.

Nr. 1: Es sind wahrscheinlich nicht die Server

Server-Upgrades, die den Unterschied ausmachen, weshalb die alte Säge "Wenn alles andere fehlschlägt, werfen Sie mehr Hardware darauf" auch heute noch besteht. Das stimmt in einigen Fällen immer noch. Aber wie viel IT ist wirklich so rechenintensiv? Im Allgemeinen können Sie viel Zeit und Geld sparen, indem Sie Ihren haarigen Augapfel von der Serverhardware abwenden. Das untere Ende des Serverspektrums verfügt über mehr als genug Leistung, um alltägliche Aufgaben zu erledigen.

Hier ist ein konkretes Beispiel. In einem Netzwerk von über 125 Benutzern schien ein älterer Windows-Domänencontroller reif für einen Ersatz zu sein. Auf diesem Server wurde ursprünglich Windows 2000 Server ausgeführt und vor einiger Zeit auf Windows Server 2003 aktualisiert, die Hardware blieb jedoch unverändert. Dieser HP ML330 mit einer 1-GHz-CPU und 128 MB RAM fungierte als Active Directory-Domänencontroller mit allen AD FSMO-Rollen, auf dem DHCP- und DNS-Dienste sowie IAS (Internet Authentication Services) ausgeführt wurden.

Melasse, richtig? Tatsächlich hat es den Job gut gemacht. Der Ersatz war ein HP DL360 G4 mit einer 3-GHz-CPU, 1 GB RAM und gespiegelten 72 GB SCSI-Laufwerken. Mit all diesen Diensten wird kaum eine Last ausgeführt - und der Leistungsunterschied ist nicht bemerkbar.

Es ist leicht, Anwendungen zu identifizieren, die Ihre gesamte CPU und Ihren gesamten Speicher verbrauchen, aber sie sind in der Regel ziemlich spezialisiert. Für fast alles andere wird die bescheidene Warenbox den Trick tun.

Nr. 2: Beschleunigen Sie diese Abfragen

Sie können die geschickteste Anwendung der Welt erstellen. Wenn der Zugriff auf Back-End-Datenbankserver jedoch zu einem Engpass führt, sind Ihre Endbenutzer oder Kunden nicht zufrieden. Optimieren Sie also diese Datenbankabfragen und maximieren Sie die Leistung.

Drei grundlegende Maßnahmen können Ihnen dabei helfen, die Abfrageleistung zu verbessern. Erstens enthalten die meisten Datenbankprodukte Tools (wie DB2 UDB für Visual Explain von iSeries), mit denen Sie Ihre Abfrage während der Entwicklung analysieren und Feedback zur Syntax und zum ungefähren Zeitpunkt der verschiedenen Abschnitte der SQL-Anweisungen geben können. Suchen Sie anhand dieser Informationen die längsten Teile der Abfrage und teilen Sie diese weiter auf, um festzustellen, wie Sie die Ausführungszeit verkürzen können. Einige Datenbankprodukte enthalten auch Tools zur Leistungsberatung, z. B. den automatischen Datenbankdiagnosemonitor von Oracle, die Empfehlungen (z. B. Vorschläge zum Erstellen eines neuen Index) zur Beschleunigung von Abfragen enthalten.

Aktivieren Sie als Nächstes die Datenbanküberwachungstools auf einem Staging-Server. Sie können ein Überwachungsprodukt eines Drittanbieters verwenden, z. B. NetVigil von Fidelia, wenn Ihre Datenbank keine Überwachungsunterstützung bietet. Generieren Sie bei aktivierten Monitoren mithilfe von Lasttestskripten Datenverkehr für den Datenbankserver. Untersuchen Sie die gesammelten Daten, um festzustellen, wie Ihre Abfragen unter Last ausgeführt wurden. Diese Informationen können zu weiteren Abfragen führen.

Wenn Sie über genügend Serverressourcen verfügen, um Ihre Produktionsumgebung für gemischte Workloads ziemlich genau nachzuahmen, können Sie eine dritte Runde der Abfrageoptimierung mit einem Lasttest-Tool wie OpenSTA sowie einer Datenbanküberwachung ausführen, um zu sehen, wie Ihre Abfragen zusammen mit anderen Anwendungen funktionieren, die die Anforderungen erfüllen Datenbank.

Wenn sich die Datenbankbedingungen ändern - mit Volumenwachstum, Löschen von Datensätzen usw. -, testen und optimieren Sie weiter. Die Mühe lohnt sich oft.

Nr. 3: Welche Kosten, Virenschutz?

Der Virenschutz auf kritischen Servern ist eine Grundvoraussetzung, insbesondere für Windows-Server. Der Aufprall kann jedoch schmerzhaft sein. Einige Virenscanner sind aufdringlicher als andere und können die Serverleistung erheblich beeinträchtigen.

Führen Sie Leistungstests mit und ohne Virenscanner durch, um die Auswirkungen zu ermitteln. Wenn Sie ohne den Scanner eine deutliche Verbesserung feststellen, ist es Zeit, nach einem anderen Anbieter zu suchen. Überprüfen Sie auch bestimmte Funktionen. Deaktivieren Sie Echtzeit-Scans, und häufig wird die Leistung gesteigert.

Unabhängig davon, wie gut Ihre Geschäftslogik geschrieben ist, müssen Sie bei der Bereitstellung auf der mittleren Ebene die Laufzeitumgebung des Anwendungsservers optimieren, um die Leistung zu maximieren.

Anwendungsserver von Anbietern wie BEA, IBM und Oracle bieten wie eine Vintage-Stereoanlage mit unzähligen Reglern zur Optimierung der Klangqualität schwindelerregende Steuerelemente. Der Trick besteht darin, die Knöpfe abhängig von den Attributen Ihrer Anwendung genau richtig zu drehen.

Nr. 4: Maximierung der mittleren Stufe

Unabhängig davon, wie gut Ihre Geschäftslogik geschrieben ist, müssen Sie bei der Bereitstellung auf der mittleren Ebene die Laufzeitumgebung des Anwendungsservers optimieren, um die Leistung zu maximieren.

Anwendungsserver von Anbietern wie BEA, IBM und Oracle bieten wie eine Vintage-Stereoanlage mit unzähligen Reglern zur Optimierung der Klangqualität schwindelerregende Steuerelemente. Der Trick besteht darin, die Knöpfe abhängig von den Attributen Ihrer Anwendung genau richtig zu drehen.

Wenn Ihre Anwendung beispielsweise servletlastig ist, möchten Sie das Servlet-Caching aktivieren. Wenn Ihre Anwendung viele SQL-Anweisungen verwendet, um eine große Benutzerbasis zu unterstützen, sollten Sie das Caching vorbereiteter Anweisungen aktivieren und die maximale Größe des Caches so festlegen, dass er groß genug ist, um die beabsichtigte Arbeitslast zu unterstützen.

Einer der Hauptbereiche, in denen die Leistungsoptimierung wirklich hilfreich sein kann, ist der Datenbankverbindungspool. Wenn Sie die minimalen oder maximalen Verbindungen zu niedrig einstellen, entsteht mit Sicherheit ein Engpass. Wenn Sie sie zu hoch einstellen, wird wahrscheinlich eine Verlangsamung auftreten, die sich aus dem zusätzlichen Overhead ergibt, der zur Aufrechterhaltung des größeren Verbindungspools erforderlich ist.

Wenn Sie die beabsichtigte Arbeitslast kennen, optimieren Sie die Laufzeit des Anwendungsservers, indem Sie Leistungsüberwachungstools wie IBMs Tivoli Performance Viewer für WebSphere auf einem Staging-Anwendungsserver aktivieren. Generieren Sie die erwartete Arbeitslast mithilfe eines Tools zur Lastgenerierung, speichern Sie die Überwachungsergebnisse und spielen Sie sie ab, um zu analysieren, welche Regler angepasst werden müssen.

In der Produktion empfiehlt es sich, die passive Überwachung mit geringem Overhead zu aktivieren, um die Laufzeit im Auge zu behalten. Wenn sich Ihre Arbeitslast im Laufe der Zeit ändert, möchten Sie eine neue Leistungsüberprüfung durchführen.

Nr. 5: Optimieren Sie die Netzwerkkonnektivität

Die meisten mittelständischen Unternehmensserver verfügen jetzt über Dual-Gigabit-NICs - die meisten verwenden jedoch nicht die zweite Pipe. Darüber hinaus sind die Preise für Gigabit-Switches gesunken. Mit einer 120-MBit / s-Verbindung zu Ihrem Dateiserver können mehrere 100-Megabit-Clients gleichzeitig auf Dateien mit Wire-Rate zugreifen.

Auch ohne Gigabit-Umschaltung sollte die NIC-Bindung ein Grundnahrungsmittel sein. Im einfachsten Fall erhalten Sie durch das Verbinden von zwei Netzwerkkarten Redundanz, fügen jedoch einen Übertragungslastausgleich hinzu, und Sie können die ausgehende Bandbreite effektiv verdoppeln. Die Verwendung von Switch-unterstütztem Teaming hat den gleichen Effekt auf den eingehenden Datenverkehr. Fast jeder große Serverhersteller bietet NIC-Teaming-Treiber an - und es gibt auch Dienstprogramme von Drittanbietern. Es ist ein großer, billiger Bandbreitenschub.

Nr. 6: Aufwickeln Ihrer Webserver

Können Sie wirklich so viel tun, um einen Webserver zu optimieren und die Leistung zu maximieren? In der Tat gibt es - hauptsächlich durch Anpassen einer Handvoll kritischer Einstellungen an den erwarteten Produktionsverkehr.

Beginnen Sie für Webserver, die bereits in Produktion sind, mit der Erfassung von Echtzeit-Webserverstatistiken (die meisten großen Webserver verfügen über diese integrierte Funktionalität). Fahren Sie dann mit der Bereitstellung fort, um festzustellen, welche Parameter gegebenenfalls angepasst werden müssen.

Aktivieren Sie die Leistungsüberwachungstools des Webservers auf dem Staging-Server. Führen Sie einen Auslastungstest durch und überprüfen Sie relevante Parameter wie Antwortzeit, gesendete und empfangene Bytes sowie die Anzahl der Anforderungen und Antworten.

Zu den wichtigsten Parametern, die Sie je nach Verkehrsaufkommen optimieren möchten, gehören Caching, Threading und Verbindungseinstellungen.

Aktivieren Sie das Caching für häufig verwendete Inhalte. Bei einigen Webservern können Sie Dateien je nach Verwendung dynamisch zwischenspeichern, während bei anderen angegeben werden muss, was zwischengespeichert werden soll. Stellen Sie sicher, dass Ihre maximale Cache-Größe für den erwarteten Datenverkehr ausreicht. Wenn Ihr Webserver die Cache-Beschleunigung unterstützt, aktivieren Sie dies ebenfalls.

Legen Sie für die Threading- und Verbindungseinstellungen die Mindest- und Höchstwerte entsprechend der erwarteten Arbeitslast fest. Für Verbindungen müssen Sie außerdem die maximale Anzahl von Anforderungen pro Verbindung und die Einstellung für das Verbindungszeitlimit definieren. Stellen Sie keinen dieser Werte zu klein oder zu groß ein, da dies zu Verlangsamungen führen kann.

Nr. 7: Das Leid des WAN

Denken Sie, Sie müssen die WAN-Bandbreite zurückfordern? Sie können problemlos ein Paket für Traffic-Shaping-Appliances oder Caching-Engines ausgeben, um die WAN-Bandbreitennutzung einzudämmen. Aber was ist, wenn es nicht die Pfeife ist?

Das Wichtigste zuerst: Machen Sie sich vor dem Kauf eine genaue Vorstellung davon, welcher Verkehr das WAN überquert. Netzwerkanalysetools wie Ethereal, ntop, Observer von Network Instrument oder EtherPeek NX von WildPacket geben Ihnen einen neuen Überblick über die tatsächlichen Entwicklungen.

Möglicherweise sind die Replikationszeiten für Ihr Active Directory viel zu niedrig eingestellt. Wenn Sie einfach längere Replikationsintervalle konfigurieren, können Sie während des Arbeitstages mehr Spielraum haben. Ordnen einige Benutzer an Remotestandorten Freigaben den falschen Servern zu und ziehen große Dateien über das WAN, ohne es zu merken? Schweben immer noch die Überreste eines lange deaktivierten IPX-Netzwerks herum? Einige WAN-Probleme sind auf eine Fehlkonfiguration der Anwendung zurückzuführen, bei der der Datenverkehr über das WAN geleitet wird, wenn er lokal hätte bleiben sollen. Regelmäßige Berichte über WAN-Verkehrsmuster sparen Geld und Kopfschmerzen.

Nr. 8: Lass uns schön spielen

Allzu oft konkurrieren Anwendungen, Webdienste und Websites aus mehreren Abteilungen des Unternehmens um Serverressourcen. Obwohl jede dieser Komponenten für sich gut abgestimmt sein kann, kann eine Anwendung aus einer anderen Abteilung, die ebenfalls dieselben Produktionscluster verwendet, eine schlecht abgestimmte Abfrage oder ein anderes Problem aufweisen, das sich wiederum auf Ihre Benutzer oder Kunden auswirkt.

In naher Zukunft können Sie nur mit Ihren Systemadministratoren und der Abteilung zusammenarbeiten, bei der das Leistungsproblem auftritt, um eine Lösung für Ihre Benutzer oder Kunden zu erhalten. Erstellen Sie langfristig eine Community in allen Abteilungen, die die Produktionscluster verwenden, in denen Ihre Objekte bereitgestellt werden. Arbeiten Sie teamübergreifend, um sicherzustellen, dass ausreichende Mittel für eine Staging-Umgebung vorhanden sind, die wirklich repräsentativ für die Produktionsumgebung mit gemischter Arbeitslast ist. Letztendlich möchten Sie eine Reihe von Benchmarks entwickeln, mit denen die Leistung gemischter Workloads in der Staging-Umgebung überprüft werden kann.

Nr. 9: Zwischenspeichern, Formen, Begrenzen, oh mein Gott!

Wenn Ihr WAN wirklich zu klein ist - und Sie sich kein Langstrecken-Frame-Relay-Netzwerk leisten können - können Traffic Shaping und Caching dazu beitragen, die Pipe zu verstopfen.

Verkehrsgestaltende Konfigurationen sind mehr Kunst als Wissenschaft. Das Priorisieren von Apps ist häufig eher politischer als technischer Natur, kann jedoch enorme Auswirkungen auf die wahrgenommene Netzwerkleistung haben.

Caching ist ein ganz anderes Tier. Es erfordert weniger Arbeit als die Gestaltung des Verkehrs, aber die Auswirkungen werden wahrscheinlich geringer sein. Caching-Engines speichern und liefern lokale Kopien von Daten, auf die häufig zugegriffen wird, um den WAN-Verkehr zu reduzieren. Der Nachteil ist, dass dynamische Inhalte nicht wirklich zwischengespeichert werden können, sodass E-Mails nicht die gleiche Leistungssteigerung genießen.

Nr. 10: Predictive Patching

Sie kommen erst am Montag zur Arbeit, um zu erfahren, dass eine Reihe von Desktops hängen bleiben oder dass sich die Leistung einer kritischen Anwendung auf ein Crawling verlangsamt hat. Nach der Untersuchung stellen Sie fest, dass ein Patch, der über das Wochenende angewendet wurde, die Ursache ist.

Aus diesem Grund benötigen Sie Tools, die Patch-Rollbacks unterstützen. Fügen Sie Patch-Tests noch besser als Teil Ihrer Patch-Management-Strategie hinzu. Zunächst müssen Sie regelmäßig eine Bestandsaufnahme der auf Desktops und Servern verwendeten Anwendungen und Technologien durchführen. Die meisten Systemverwaltungstools, z. B. SMS von Microsoft, können automatisch Inventar für Sie erstellen.

Replizieren Sie anschließend die Anwendungen und Technologien in eine Staging-Umgebung. Wenn Ihr Betriebssystem und Ihre Infrastruktursoftware keine Patch-Testtools enthalten, erwerben Sie ein Drittanbieter-Tool wie FLEXnet AdminStudio oder Wise Package Studio.

Alternativ können Sie einige Skripte schreiben, um die Plattform oder Technologie mit den neuesten Patches im Spiel funktionsfähig zu machen. Sie müssen dieses Szenario wiederholen (und Skripte anpassen), wenn neue Patches eintreffen und Softwareänderungen vorgenommen werden.