Wat is opslagtesten? Soorten, Concepts & Voorbeeld

โšก Slimme samenvatting

Opslagtesten controleren of een applicatie zijn gegevens naar de juiste mappen schrijft en voldoende schijfruimte heeft om onverwachte afsluitingen te voorkomen, terwijl tegelijkertijd wordt gemeten hoe snel de onderliggende opslag reageert onder realistische belasting.

  • ๐Ÿ’พ Ook wel genoemd: Prestatietesten voor opslag, want snelheid is net zo belangrijk als de juiste plaatsing.
  • โš ๏ธ Waarom het uitmaakt: Trage opslag leidt tot trage reactietijden, langdurige query's en een lagere beschikbaarheid van applicaties.
  • ๐Ÿงฉ Drie typen: Applicatietesten, applicatiesimulatie en benchmarking, elk met hun eigen activiteiten.
  • ๐Ÿ“ Kerngegevens: IOPS, latentie, doorvoer en wachtrijdiepte moeten altijd samen worden gelezen, en niet afzonderlijk.
  • ๐Ÿงช Hoe het werkt: Definieer de doelstellingen, bepaal de omvang van de dataset, kies realistische lees-/schrijfverhoudingen en voer vervolgens de belasting geleidelijk op.
  • ๏ธ tooling: Synthetische I/O-generatoren produceren herhaalbare getallen die bestandskopieeropdrachten nooit kunnen produceren.
  • ???? Veelgemaakte fouten: De verkeerde server wordt gemonitord, overslaan.ping Het cachegeheugen leegmaken en het processorgebruik negeren.

Handleiding voor het testen van opslagsystemen: typen, concepten en veelvoorkomende fouten.

Wat is opslagtesten?

Opslag testen Dit is een type softwaretest dat wordt gebruikt om te controleren of de te testen softwaretoepassing de relevante gegevens in de juiste mappen opslaat en of er voldoende ruimte is om onverwachte afsluitingen als gevolg van onvoldoende schijfruimte te voorkomen. Het wordt ook wel genoemd Prestatietesten van de opslag.

De techniek bevindt zich aan de niet-functionele kant van de discipline: net als andere vormen van niet-functionele testenHet zegt niets over de vraag of een functie het juiste antwoord oplevert, maar alles over de vraag of het systeem antwoorden kan blijven produceren naarmate het datavolume en de I/O-belasting toenemen.

Waarom opslagtesten?

Opslag is de traagste laag die de meeste applicaties gebruiken, waardoor een zwakte daar overal elders aan het licht komt. Vier redenen rechtvaardigen een aparte testcyclus.

  • Trage opslag betekent trage reactietijden, langdurige query's en een lagere beschikbaarheid van applicaties.
  • Trage opslag brengt extra kosten met zich mee voor het onderhoud van de serverinfrastructuur.
  • Het is nuttig om de praktische opslaglimieten van het systeem te bepalen vรณรณr de implementatie.
  • Het is nuttig om te begrijpen hoe het systeem reageert wanneer een hardwarecomponent wordt vervangen of geรผpgraded.

Het onderstaande diagram plaatst opslagtesten in die context: de applicatie, het bestandssysteem en het fysieke apparaat bevinden zich allemaal op hetzelfde pad, en een vertraging ergens op dat pad bereikt de gebruiker.

Overzicht van opslagtests, waarbij een applicatie gegevens via het bestandssysteem naar het opslagapparaat schrijft.

Soorten opslagtests

Er worden drie benaderingen gebruikt, die voornamelijk verschillen in de mate waarin de werklast overeenkomt met de daadwerkelijke toepassing.

  • Toepassingstests: Applicatietesten met voorbeeldquery's in een productieachtige omgeving.
  • Toepassingssimulatie: Het testen wordt uitgevoerd met behulp van standaardsoftware die zich op vergelijkbare wijze gedraagt โ€‹โ€‹als de doelapplicatie.
  • benchmarking: De tests worden uitgevoerd met behulp van standaard benchmarksoftware die een synthetische, herhaalbare werkbelasting genereert.

De eerste methode levert het meest realistische resultaat op, maar is het minst draagbaar; de derde methode geeft cijfers die vergelijkbaar zijn tussen apparaten en fabrikanten, maar zegt weinig over hoe de applicatie zelf zal functioneren.

Gemeenschappelijke testen Concepts Betrokken tijdens opslagtesten

Elk van deze drie typen correspondeert met een aparte reeks activiteiten, zoals hieronder samengevat.

Soorten opslagtests Voorbeeld van algemene opslagtestactiviteiten
Toepassingstests Vergelijk OLTP-responstijden
Vergelijk batchruntijden
Vergelijk aanhoudende streamingtarieven
Toepassingssimulatie Test piekopslag-IOPS voor databases
Test de maximale opslagdoorvoer voor datastreamingomgevingen.
Test de opslaglatentie voor berichtenverkeer of andere single-threaded applicaties.
Benchmarking Testen op gegevenscorruptie

Belangrijke meetwaarden bij opslagtesten

Opslagresultaten worden weergegeven aan de hand van een kleine reeks getallen. Het lezen van slechts รฉรฉn van deze getallen leidt het snelst tot een verkeerde conclusie, omdat ze elkaar beรฏnvloeden.

metrisch Wat het meet Waar het er het meest toe doet
IOPS Aantal lees- en schrijfbewerkingen per seconde, ongeacht de grootte Transactionele databases en kleine willekeurige schrijfbewerkingen
Wachttijd De tijd tussen het begin en het einde van een enkele I/O-bewerking. Berichtenverkeer en applicatiepaden met รฉรฉn thread
Doorvoer De hoeveelheid data die per seconde wordt verplaatst, meestal in MB/s. Batchverwerking, back-ups en streamingworkloads
Wachtrijdiepte Aantal openstaande aanvragen die tegelijkertijd zijn ingediend Elke run die daadwerkelijke gelijktijdigheid moet weerspiegelen

De diepte van de wachtrij verdient bijzondere aandacht. Het รฉรฉn voor รฉรฉn versturen van een verzoek levert weliswaar een accurate latentie per verzoek op, maar een kunstmatig lage IOPS- en doorvoerwaarde. Dit verklaart waarom een โ€‹โ€‹apparaat traag kan lijken tijdens een test en snel in de productieomgeving, of andersom.

Hoe voer je opslagtests uit?

De betrouwbaarheid van een opslagtest hangt af van de omstandigheden waaronder deze is uitgevoerd. De onderstaande procedure zorgt ervoor dat de resultaten reproduceerbaar zijn.

  • Stap 1) Definieer het doel. Bepaal of de test bedoeld is om de gereedheid van de database aan te tonen, de maximale doorvoersnelheid te bepalen of twee apparaten met elkaar te vergelijken. Elk doel vereist een andere werklast, en het combineren ervan levert resultaten op waar niemand iets mee kan.
  • Stap 2) Bepaal een realistische omvang van de dataset. Een werkset die klein genoeg is om in de cache te passen, meet de cachegrootte, niet de opslagruimte. Stem de werkset af op het productiedatavolume, of overschrijd de cachegrootte in ieder geval ruimschoots.
  • Stap 3) Kies de lees-/schrijfmix en het patroon. Willekeurige en sequentiรซle toegang gedragen zich heel verschillend op hetzelfde apparaat, net als 70/30 lees-schrijf-mixen en schrijf-alleen-bursts. Neem de mix uit de productiemonitoring in plaats van uit de standaardinstellingen.
  • Stap 4) Stel de wachtrijdiepte en het aantal threads in. Deze parameters bepalen hoeveel gelijktijdige verwerking het apparaat bereikt, dus noteer ze bij elk resultaat. Een cijfer dat zonder deze parameters wordt vermeld, kan niet worden gereproduceerd.
  • Stap 5) Cache wissen en opwarmen. Wis de server- en apparaatcaches tussen de runs en negeer vervolgens het eerste interval, zodat de stabiele waarden worden vergeleken in plaats van de waarden bij de eerste aanraking.
  • Stap 6) Lang genoeg hardlopen. Korte schrijfcycli maskeren de schrijfproblemen die optreden zodra de schrijfbuffer van een SSD vol is. Langdurige schrijfcycli brengen deze problemen aan het licht.
  • Stap 7) Monitor de hele stack. Registreer het processorgebruik, het geheugen en het netwerk naast de opslagcapaciteit, zodat een knelpunt elders niet ten onrechte wordt geรฏnterpreteerd als een opslaglimiet.
  • Stap 8) Herhaal en vergelijk. Voer dezelfde configuratie meerdere keren uit en bewaar de logbestanden; prestatieverschillen tussen builds zijn alleen zichtbaar ten opzichte van een opgeslagen basislijn.

Omdat dezelfde discipline van toepassing is op elke belastingsgestuurde meting, worden deze metingen doorgaans samen met andere metingen gepland. prestatie testen en gepland voordat de releasekandidaat wordt bevroren.

Opslagtesttools

Gereedschap valt in twee categorieรซn uiteen, en de meeste teams hebben beide nodig.

  • Synthetische I/O-generatoren. Hulpprogramma's zoals FIOIometer en sysbench geven een nauwkeurig omschreven workload af: de blokgrootte, de verhouding tussen lezen en schrijven, de wachtrijdiepte en de duur worden allemaal gespecificeerd, zodat een run exact op een ander apparaat kan worden herhaald.
  • Laadtools op applicatieniveau. Bestuurders zoals JMeter Test de applicatie zelf, zodat de opslag hetzelfde toegangspatroon ziet als echte gebruikers creรซren, inclusief de queryplannen en het indexgedrag dat een synthetische tool niet kan reproduceren.

OperaDe tellers van het opslagsysteem maken het plaatje compleet. Ongeacht welk hulpmiddel de belasting genereert, de opslagcijfers moeten worden afgelezen naast de tellers van de processor, het geheugen en het netwerk โ€” verschillende technieken voor het testen van de opslag, waaronder benchmark testen en volumetesten, afhankelijk zijn van die volledige stackweergave om een โ€‹โ€‹resultaat correct te interpreteren.

Fouten tijdens het uitvoeren van opslagtests

Meest ongeldige opslagresultaten trace terug naar een klein aantal vermijdbare fouten.

  • De prestaties van de verkeerde server worden gemonitord, waardoor de cijfers betrekking hebben op een machine die niet wordt getest.
  • Het vergelijken van opslagapparaten zonder eerst de servercache te wissen, waarbij het geheugen in plaats van de schijf wordt gemeten.
  • Het vergeten om het processorgebruik tijdens het testen te monitoren, waardoor een processorgerelateerd knelpunt verborgen blijft achter een symptoom dat lijkt op een opslagprobleem.
  • Het testen van de opslagprestaties met behulp van bestandskopieeropdrachten, die single-threaded, cache-ondersteund en niet herhaalbaar zijn.

Veelgestelde vragen

Volume testen Het verhoogt de hoeveelheid data die een applicatie opslaat en observeert hoe de prestaties verslechteren. Opslagtesten richten zich op de onderliggende apparaatlaag en meten hoe snel die data kan worden geschreven en teruggelezen.

Elke locatie waarnaar de applicatie schrijft: datamappen, log- en tijdelijke mappen, uploadlocaties en archiefpaden. Voor elk van deze locaties moet worden gecontroleerd of het bestand op de juiste plaats terechtkomt en of de beschikbare schijfruimte correct wordt gerapporteerd.

De meetwaarden blijven hetzelfde, maar er worden IOPS-limieten, burstcredits en 'noisy neighbours' toegevoegd. Laat het systeem lang genoeg draaien totdat de burstcredits zijn opgebruikt; anders geeft het gemeten cijfer een tijdelijke limiet weer in plaats van een stabiele situatie.

Machine learning-modellen bepalen de normale IOPS- en latentiecurves als basislijn en signaleren vervolgens runs die hiervan afwijken voordat een drempelwaarde wordt overschreden. Dezelfde modellen voorspellen de capaciteitsgroei, waardoor schijfuitputting wordt voorspeld in plaats van in de productieomgeving te worden ontdekt.

GitHub-copiloot Het programma genereert snel conceptbestanden voor taken, cache-clearing wrappers en scripts voor het parseren van resultaten. De tester moet nog steeds de blokgrootte, de wachtrijdiepte en de duur opgeven, aangezien deze gegevens afkomstig zijn van de productiemonitoring en niet van een sjabloon.

Dat is een geldige testcase, geen ongeluk. De applicatie zou moeten waarschuwen, geleidelijk moeten terugvallen en de situatie moeten loggen in plaats van te stoppen. Herstel van een volle schijf hoort bij... herstel testen.

Meestal verschilden de cachestatus, de wachtrijdiepte of de runlengte tussen de verschillende typen SSD's. Ook de conditie van het apparaat speelt een rol: een net geformatteerde SSD schrijft sneller dan een SSD die al meerdere keren is gevuld en overschreven.

Het wordt doorgaans uitgevoerd door prestatietesters, waarbij infrastructuur- of databasebeheerders de apparaatconfiguratie en de toegangspatronen voor de productieomgeving aanleveren. Het resultaat is alleen verdedigbaar als beide partijen het erover eens zijn dat de werkbelasting realistisch was.

Vat dit bericht samen met: