sql >> Database >  >> RDS >> Database

Netwerkbelasting testen met iPerf

Databasebeheerder zijn kan een hele uitdaging zijn op momenten dat u prestatieproblemen moet oplossen. De databaseserver is slechts één onderdeel van het applicatie-ecosysteem en wordt routinematig gezien als het prestatieprobleem. SQL Server is een van die zwarte dozen die velen niet begrijpen, net als het SAN en netwerk. Productie-DBA's die hun servers bewaken, kunnen snel identificeren of SQL Server buiten de normale basislijn presteert, maar er zijn twee belangrijke gebieden waar we weinig zicht op hebben:het SAN en het netwerk. DBA's moeten regelmatig samenwerken met andere technici als het gaat om het oplossen van prestatieproblemen die niet direct verband houden met SQL Server. We kunnen de schijfprestaties gemakkelijk volgen door sys.dm_io_virtual_file_stats te controleren , waarover ik schreef in Lees-/schrijflatentie controleren; het volgen van netwerkprestatieproblemen binnen SQL Server is echter niet zo eenvoudig.

Slechte netwerkprestaties kunnen een stille moordenaar zijn voor de prestaties van applicaties en mijn persoonlijke ervaring heeft aangetoond dat dit bij vele gelegenheden het geval is. Vaak kreeg een applicatie prestatieproblemen en zei de applicatie-engineer dat de applicatieserver er goed uitzag en begon met de vinger naar de database te wijzen. Ik zou een telefoontje krijgen om naar de databaseserver te kijken en alle indicaties toonden aan dat de databaseserver in goede gezondheid verkeerde (en dit is waar het controleren op belangrijke prestatie-indicatoren en het hebben van een baseline helpt!). Omdat de applicatie- en databaseteams zeiden dat alles in orde was, vroegen we het netwerkteam om dingen te controleren. Het netwerkteam zou een paar dingen bekijken en ook alles duidelijk aan hun kant geven. Elk team het oplossen van problemen en het beoordelen van hun respectievelijke systemen kostte tijd, terwijl de applicatieprestaties er nog steeds onder te lijden hadden. Het probleem zou dan escaleren totdat alle teams zouden worden gevraagd om deel te nemen aan een conferentiebrug om samen problemen op te lossen. Uiteindelijk zou iemand een diepere netwerktest starten en vaststellen dat we ofwel een poortverzadiging, routering of een ander complex netwerkprobleem hadden. Een paar klikken of iets veranderen aan hun kant zou uiteindelijk de traagheid van de applicatie oplossen.

Het belangrijkste netwerkprobleem dat ik bij klanten ben tegengekomen, betreft meestal bandbreedte bij het maken van back-ups. Veel grotere organisaties migreren naar 10Gb-netwerken voor kerninfrastructuur, maar wanneer u met zowel fysieke als virtuele netwerken werkt, is het gemakkelijk om een ​​instelling of poort verkeerd te configureren en deze te laten dalen naar 1Gb. Voor regulier applicatienetwerkverkeer merkt u misschien niet de verslechtering van de prestaties, maar zodra u probeert 100 GB aan gegevens voor back-ups te kopiëren, raakt die 1 GB verzadigd en zullen uw back-up- en hersteltaken eronder lijden.

Voor DBA's kan het een uitdaging zijn om anderen zover te krijgen dat ze zo diep in problemen kijken waarvan ze denken dat ze niet hun probleem zijn, omdat de eerste indicatoren het probleem niet onthullen. Als u zich kunt wapenen met gegevens voordat u contact opneemt met andere teams, kunt u ze erbij betrekken. Door iPerf te gebruiken om een ​​eerste bandbreedtetest uit te voeren, kunt u snel bepalen of u de gewenste netwerksnelheden haalt. Als u bijvoorbeeld een 10Gb-netwerk gebruikt tussen de toepassingsserver en de databaseserver en u voert een test uit en krijgt slechts 1Gb, dan weet u dat er iets niet klopt. Als u deze bevinding kunt documenteren, kunt u uw netwerktechnici met vertrouwen vragen om een ​​bandbreedteprobleem te onderzoeken.

Hoe ga je aan de slag met iPerf? Eerst moet je de tool downloaden van iPerf.fr. Omdat ik aan Windows Server 2012 werk, heb ik de Windows-binaire bestanden naar mijn computer gedownload. Nadat u het pakket hebt gedownload en uitgepakt, moet u het programma vanaf een opdrachtregel uitvoeren. Ik heb iPerf 3.0.11 gedownload, dat al bijna een jaar uit is. Zorg ervoor dat u de documentatie van dit hulpprogramma leest. Aangezien dit een opdrachtregelprogramma is, zijn er tientallen opties die u kunt gebruiken. In het onderstaande voorbeeld zal ik er maar een paar gebruiken, maar afhankelijk van uw situatie moet u mogelijk andere opties gebruiken, zoals het specificeren van de poort of het vergroten van de pakketgrootte. Houd er rekening mee dat de optie-opdrachten hoofdlettergevoelig zijn.

Om iPerf te gebruiken, moet je minimaal twee servers gebruiken om de bandbreedte te testen. Nadat u de binaire bestanden naar de twee servers hebt gekopieerd, moet u eerst de iPerf-listener op een van de servers starten. Om dit te doen zal ik het volgende commando uitvoeren:

iperf3 -s

Deze opdracht voert iPerf uit in servermodus en staat slechts één verbinding tegelijk toe.

Op de tweede server moet u iPerf starten met verschillende clientopties. Eerst gaan we -c specificeren om de clientmodus te specificeren. We zullen ook -t gebruiken om de tijd op te geven om elke test uit te voeren en -P om het aantal gelijktijdige verbindingen op te geven dat moet worden gemaakt. We willen meerdere verbindingen specificeren, zodat we het netwerk behoorlijk kunnen belasten. Voor deze test ga ik het volgende commando uitvoeren:

iperf3 -c (servernaam of ip-adres van de eerste server) -t 30 -P 10

Het bovenstaande commando start een transmissietest van 30 seconden met 10 gelijktijdige verbindingen.

Ik heb deze test uitgevoerd op twee virtuele machines op mijn Dell M6800, dus er was geen fysiek netwerk waar deze VM's doorheen konden.

Van server 2 die verbinding maakte met server 1 kreeg ik 7,57 GBytes overgedragen met een bandbreedte van 2,17 Gbits/sec. Niet slecht voor een paar VM's op een laptop.

Netwerkstatistieken / iPerf-uitvoer:server 2 maakt verbinding met server 1

Van server 1 die verbinding maakte met server 2 kreeg ik 6,98 GBytes overgedragen met een bandbreedte van 2,00 Gbits/sec. Zoals je kunt zien, is er een klein verschil in de cijfers, maar nog steeds relatief dichtbij. Als deze cijfers drastisch anders waren geweest, zou ik de oorzaak moeten onderzoeken.

Netwerkstatistieken / iPerf-uitvoer:server 1 maakt verbinding met server 2

Het is belangrijk om deze tests uit te voeren voordat u in productie gaat en er een gewoonte van te maken deze tests regelmatig op uw productieservers te herhalen. Je moet weten wat normaal is, als je het niet in de gaten houdt, kun je het ook niet meten. Als u weet dat er firmware-updates worden uitgevoerd op uw servers, de virtuele host of andere kernnetwerkapparatuur, kan een iPerf-test voor en na de wijzigingen u snel waarschuwen om eventuele negatieve bijwerkingen te identificeren.

Het is ook belangrijk om deze test uit te voeren op servers die rechtstreeks communiceren met de databaseserver en alle servers waarmee de databaseserver rechtstreeks communiceert, zoals netwerkback-upapparaten. IPerf werkt op zowel Windows als Linux, waardoor het gemakkelijk is om tussen de twee besturingssystemen te testen.

Voor DBA's hoeft het netwerk niet langer een black box te zijn waar je niets vanaf weet. Het gebruik van iPerf kan u waarschuwen voor bandbreedteproblemen met het netwerk tussen uw databaseserver en een andere server. Er is geen reden om alleen op PING en TRACERT te vertrouwen voor beperkte netwerkprobleemoplossing. Download iPerf en begin met het documenteren van uw netwerkbandbreedte.


  1. Hoe kan ik een SELECT DISTINCT uitvoeren op alle velden behalve een BLOB?

  2. Stop alsjeblieft met het gebruik van dit UPSERT-antipatroon!

  3. Opgeslagen procedure met optionele WHERE-parameters

  4. Hoe alle privileges van een gebruiker in Oracle te tonen?