Database
 sql >> Datenbank >  >> RDS >> Database

Netzwerklasttests mit iPerf

Datenbankadministrator zu sein, kann manchmal sehr herausfordernd sein, wenn Sie Leistungsprobleme beheben müssen. Der Datenbankserver ist nur eine Komponente des Anwendungsökosystems und wird regelmäßig als Leistungsproblem beschuldigt. SQL Server ist eine dieser Black Boxes, die viele nicht verstehen, ähnlich wie das SAN und das Netzwerk. Produktions-DBAs, die ihre Server überwachen, können schnell feststellen, ob die Leistung von SQL Server außerhalb seiner normalen Baseline liegt, aber es gibt zwei Hauptbereiche, in die wir wenig Einblick haben:das SAN und das Netzwerk. DBAs müssen regelmäßig mit anderen Technikern zusammenarbeiten, wenn es um die Behebung von Leistungsproblemen geht, die nicht direkt mit SQL Server zusammenhängen. Wir können die Festplattenleistung leicht verfolgen, indem wir sys.dm_io_virtual_file_stats überwachen , worüber ich in Monitoring Read/Write Latency geschrieben habe; Das Verfolgen von Netzwerkleistungsproblemen innerhalb von SQL Server ist jedoch nicht so einfach.

Eine schlechte Netzwerkleistung kann ein stiller Killer für die Anwendungsleistung sein, und meine persönliche Erfahrung hat gezeigt, dass dies bei vielen Gelegenheiten der Fall ist. Häufig traten bei einer Anwendung Leistungsprobleme auf, und der Anwendungstechniker sagte, dass der Anwendungsserver gut aussieht, und begann, mit dem Finger auf die Datenbank zu zeigen. Ich erhielt einen Anruf, um mir den Datenbankserver anzusehen, und alle Anzeichen zeigten, dass der Datenbankserver in gutem Zustand war (und hier hilft die Überwachung der wichtigsten Leistungsindikatoren und das Vorhandensein einer Baseline!). Da die Anwendungs- und Datenbankteams sagten, dass alles in Ordnung sei, baten wir das Netzwerkteam, die Dinge zu überprüfen. Das Netzwerkteam würde sich einiges anschauen und auch auf seiner Seite Entwarnung geben. Jedes Team brauchte Zeit, um Fehler zu beheben und ihre jeweiligen Systeme zu überprüfen, während die Anwendungsleistung immer noch darunter litt. Das Problem wurde dann eskaliert, bis alle Teams gebeten wurden, sich einer Konferenzbrücke anzuschließen, um gemeinsam Fehler zu beheben. Irgendwann würde jemand einen tieferen Netzwerktest starten und feststellen, dass wir entweder eine Portsättigung, ein Routing oder ein anderes komplexes Netzwerkproblem hatten. Ein paar Klicks oder etwas an ihrer Seite zu ändern, würde schließlich die Langsamkeit der Anwendung beheben.

Das bedeutendste Netzwerkproblem, auf das ich bei Clients gestoßen bin, betrifft normalerweise die Bandbreite bei der Durchführung von Sicherungen. Viele größere Unternehmen migrieren für die Kerninfrastruktur auf 10-Gbit-Netzwerke. Wenn Sie jedoch sowohl mit physischen als auch mit virtuellen Netzwerken arbeiten, ist es leicht, eine Einstellung oder einen Port falsch zu konfigurieren und auf 1 Gbit zu fallen. Bei normalem Anwendungsnetzwerkverkehr bemerken Sie die Leistungseinbußen möglicherweise nicht, aber sobald Sie versuchen, 100 GB an Daten für Sicherungen zu kopieren, wird dieses 1 GB gesättigt und Ihre Sicherungs- und Wiederherstellungsjobs werden darunter leiden.

Für DBAs kann es schwierig sein, andere dazu zu bringen, sich so tief mit Problemen zu befassen, von denen sie glauben, dass sie nicht ihr Problem sind, weil erste Indikatoren das Problem nicht erkennen lassen. In der Lage zu sein, sich mit Daten auszustatten, bevor Sie sich an andere Teams wenden, wird dazu beitragen, sie einzubeziehen. Indem Sie mit iPerf einen anfänglichen Bandbreitentest durchführen, können Sie schnell feststellen, ob Sie die erwarteten Netzwerkgeschwindigkeiten erhalten. Wenn Sie beispielsweise ein 10-GB-Netzwerk zwischen dem Anwendungsserver und dem Datenbankserver verwenden und einen Test durchführen und nur 1 GB erhalten, dann wissen Sie, dass etwas nicht stimmt. Wenn Sie dieses Ergebnis dokumentieren können, können Sie getrost Ihre Netzwerktechniker bitten, sich mit einem Bandbreitenproblem zu befassen.

Wie fangen Sie an, iPerf zu verwenden? Zuerst müssen Sie das Tool von iPerf.fr herunterladen. Da ich an Windows Server 2012 arbeite, habe ich die Windows-Binärdateien auf meinen Computer heruntergeladen. Nachdem Sie das Paket heruntergeladen und entpackt haben, müssen Sie das Programm über eine Befehlszeile ausführen. Ich habe iPerf 3.0.11 heruntergeladen, das seit fast einem Jahr erhältlich ist. Lesen Sie unbedingt die Dokumentation dieses Dienstprogramms. Da es sich um ein Befehlszeilentool handelt, gibt es Dutzende von Optionen, die Sie verwenden können. Im folgenden Beispiel werde ich nur einige davon verwenden, je nach Situation müssen Sie jedoch möglicherweise andere Optionen verwenden, z. B. die Angabe des Ports oder die Erhöhung der Paketgröße. Bitte beachten Sie, dass bei den Optionsbefehlen zwischen Groß- und Kleinschreibung unterschieden wird.

Um iPerf zu verwenden, müssen Sie mindestens zwei Server verwenden, um die Bandbreite zu testen. Nachdem Sie die Binaries auf die beiden Server kopiert haben, müssen Sie zunächst den iPerf-Listener auf einem der Server starten. Dazu führe ich den folgenden Befehl aus:

iperf3 -s

Dieser Befehl führt iPerf im Servermodus aus und lässt nur jeweils eine Verbindung zu.

Auf dem zweiten Server müssen Sie iPerf mit mehreren Client-Optionen starten. Zuerst werden wir -c angeben, um den Client-Modus anzugeben. Wir werden auch -t verwenden, um die Zeit für die Ausführung jedes Tests anzugeben, und -P, um die Anzahl der gleichzeitig herzustellenden Verbindungen anzugeben. Wir möchten mehrere Verbindungen angeben, damit wir das Netzwerk angemessen belasten können. Für diesen Test werde ich den folgenden Befehl ausführen:

iperf3 -c (Servername oder IP-Adresse des ersten Servers) -t 30 -P 10

Der obige Befehl startet einen 30-Sekunden-Übertragungstest mit 10 gleichzeitigen Verbindungen.

Ich habe diesen Test auf zwei virtuellen Maschinen auf meinem Dell M6800 durchgeführt, sodass es kein physisches Netzwerk gab, das diese VMs durchlaufen konnten.

Von Server 2, der sich mit Server 1 verbindet, wurden 7,57 GBytes mit einer Bandbreite von 2,17 Gbits/s übertragen. Nicht schlecht für ein paar VMs auf einem Laptop.

Netzwerkstatistiken/iPerf-Ausgabe:Server 2 verbindet sich mit Server 1

Von Server 1, der sich mit Server 2 verbindet, wurden 6,98 GBytes mit einer Bandbreite von 2,00 Gbits/s übertragen. Wie Sie sehen können, gibt es einen kleinen Unterschied in den Zahlen, aber immer noch relativ nahe. Wären diese Zahlen drastisch anders gewesen, müsste ich die Ursache untersuchen.

Netzwerkstatistiken/iPerf-Ausgabe:Server 1 verbindet sich mit Server 2

Es ist wichtig, dass Sie diese Tests durchführen, bevor Sie in die Produktion gehen, und es sich zur Gewohnheit machen, diese Tests regelmäßig auf Ihren Produktionsservern zu wiederholen. Sie müssen wissen, was normal ist, wenn Sie es nicht überwachen, können Sie es nicht messen. Wenn Sie wissen, dass Firmware-Aktualisierungen auf Ihren Servern, dem virtuellen Host oder einem Kernnetzwerkgerät durchgeführt werden, könnte ein iPerf-Test vor und nach den Änderungen Sie schnell auf negative Nebenwirkungen aufmerksam machen.

Es ist auch wichtig, diesen Test für alle Server durchzuführen, die direkt mit dem Datenbankserver verbunden sind, und für alle Server, mit denen der Datenbankserver direkt verbunden ist, wie z. B. Netzwerksicherungsgeräte. IPerf funktioniert sowohl unter Windows als auch unter Linux, wodurch es einfach ist, zwischen den beiden Betriebssystemen zu testen.

Für DBAs muss das Netzwerk keine Blackbox mehr sein, von der Sie nichts wissen. Die Verwendung von iPerf kann Sie auf Bandbreitenprobleme mit dem Netzwerk zwischen Ihrem Datenbankserver und jedem anderen Server aufmerksam machen. Es gibt keinen Grund, sich nur auf PING und TRACERT für begrenzte Netzwerkfehlerbehebung zu verlassen. Laden Sie iPerf herunter und beginnen Sie mit der Dokumentation Ihrer Netzwerkbandbreite.