Mitä on tallennustestaus? Tyypit, Concepts & Esimerkki

⚡ Älykäs yhteenveto

Tallennustilan testaus varmistaa, että sovellus kirjoittaa tietonsa oikeisiin hakemistoihin ja että sillä on riittävästi levytilaa odottamattomien sulkemisten välttämiseksi, samalla kun mitataan, kuinka nopeasti pohjana oleva tallennustila reagoi realistisen kuormituksen alla.

  • 💾 Kutsutaan myös: Tallennustilan suorituskyvyn testaus, koska nopeus on yhtä tärkeää kuin oikea sijoittelu.
  • ⚠️ Miksi sillä on väliä: Hidas tallennustila tuottaa hitaita vasteaikoja, pitkiä kyselyitä ja alhaisempaa sovellusten käytettävyyttä.
  • 🧩 Kolme tyyppiä: Sovellustestaus, sovellussimulointi ja vertailuanalyysit, joilla kullakin on omat toimintonsa.
  • 📏 Keskeiset mittarit: IOPS, latenssi, läpäisykyky ja jonon syvyys luetaan aina yhdessä eikä erikseen.
  • 🧪 Näin se toimii: Määrittele tavoitteet, mittaa datajoukko, valitse realistiset luku-/kirjoitusyhdistelmät ja lisää sitten kuormitusta.
  • 🛠️ työkalut: Synteettiset I/O-generaattorit tuottavat toistettavia lukuja, joita tiedostokopiointikomennot eivät koskaan pysty tuottamaan.
  • 🚫 Yleiset virheet: Väärän palvelimen valvonta, ohitaping välimuistin tyhjennys ja prosessorin käyttöasteen huomiotta jättäminen.

Tallennustilatestauksen opetusohjelma, joka käsittelee tyyppejä, käsitteitä ja yleisiä virheitä

Mitä on tallennustestaus?

Varastoinnin testaus on eräänlainen ohjelmistotestaus, jota käytetään varmistamaan, tallentaako testattava ohjelmistosovellus asiaankuuluvat tiedot oikeisiin hakemistoihin ja onko sillä riittävästi tilaa estääkseen odottamattomat sulkeutumiset riittämättömän levytilan vuoksi. Sitä kutsutaan myös tallennustilan suorituskyvyn testaus.

Tekniikka sijoittuu tieteenalan ei-toiminnalliselle puolelle: kuten muutkin ei-toiminnallinen testaus, se ei kerro mitään siitä, tuottaako ominaisuus oikean vastauksen, ja kaikki siitä, pystyykö järjestelmä tuottamaan vastauksia datamäärän ja I/O-paineen kasvaessa.

Miksi tallennustestaus?

Tallennus on hitain kerros, johon useimmat sovellukset ovat kosketuksissa, joten sen heikkous ilmenee kaikkialla muualla. Neljä syytä oikeuttaa erillisen testisyklin.

  • Hidas tallennustila tarkoittaa hitaita vasteaikoja, pitkiä kyselyitä ja sovellusten alhaisempaa käytettävyyttä.
  • Hidas tallennustila on palvelininfrastruktuurin ylläpidon lisäkuormitus.
  • Se auttaa selvittämään järjestelmän käytännön tallennusrajoitukset ennen käyttöönottoa.
  • Se auttaa ymmärtämään, miten järjestelmä reagoi, kun laitteisto vaihdetaan tai päivitetään.

Alla oleva kaavio sijoittaa tallennustestauksen tähän kontekstiin – sovellus, tiedostojärjestelmä ja fyysinen laite sijaitsevat kaikki samalla polulla, ja viive missä tahansa polulla saavuttaa käyttäjän.

Tallennustilan testauksen yleiskatsaus, jossa näytetään sovelluksen kirjoittavan tietoja tiedostojärjestelmän kautta tallennuslaitteeseen

Säilytystestien tyypit

Käytössä on kolme lähestymistapaa, ja ne eroavat toisistaan ​​pääasiassa siinä, kuinka läheisesti työmäärä muistuttaa todellista sovellusta.

  • Sovelluksen testaus: Sovellusten testaus esimerkkikyselyillä tuotantoympäristön kaltaisessa ympäristössä.
  • Sovelluksen simulointi: Testauksen suorittaminen kohdesovelluksen tavoin käyttäytyvällä standardiohjelmistolla.
  • Vertailu: Testauksen suorittaminen käyttämällä synteettistä, toistettavaa työmäärää luovaa standardinmukaista vertailuohjelmistoa.

Ensimmäinen antaa realistisimman ja vähiten siirrettävän tuloksen; kolmas antaa lukuja, joita voidaan vertailla eri laitteiden ja toimittajien välillä, mutta se kertoo vain vähän siitä, miten itse sovellus toimii.

Yhteinen testaus Concepts Mukana varastotestauksessa

Jokainen näistä kolmesta tyypistä vastaa erillistä aktiviteettijoukkoa, kuten alla on tiivistetty.

Säilytystestien tyypit Esimerkki yleisistä varastointitestaustoiminnoista
Sovelluksen testaus Vertaa OLTP-vastausaikoja
Vertaa erän ajoaikoja
Vertaa jatkuvia suoratoiston hintoja
Sovellussimulointi Testaa tietokantojen huipputallennustilaa
Testaa huipputallennuskapasiteettia datan suoratoistoympäristöissä
Viestien tai muiden yksisäikeisten sovellusten tallennusviiveen testaus
benchmarking Tietojen korruption testaus

Keskeiset mittarit tallennustestauksessa

Tallennustulokset raportoidaan pienen numerojoukon avulla. Yksittäisen numeron lukeminen yksinään on nopein tapa päätyä väärään johtopäätökseen, koska ne käyvät kauppaa keskenään.

metrinen Mitä se mittaa Missä sillä on eniten merkitystä
IOPS Sekunnissa suoritetut luku- ja kirjoitusoperaatiot koosta riippumatta Transaktiotietokannat ja pienet satunnaiset kirjoitusoperaatiot
Viive Aika yhden I/O-operaation aloittamisen ja suorittamisen välillä Viestintä ja yksisäikeiset sovelluspolut
suoritusteho Sekunnissa siirrettävän datan määrä, yleensä megatavuina sekunnissa Eräajot, varmuuskopiot ja suoratoistotyökuormat
Jonon syvyys Samanaikaisesti tehtyjen käsittelemättömien pyyntöjen määrä Mikä tahansa ajo, jonka on heijastettava todellista samanaikaisuutta

Jonon syvyyteen on kiinnitettävä erityistä huomiota. Yhden pyynnön tekeminen kerrallaan tuottaa tarkan yksittäisen pyynnön latenssin, mutta keinotekoisen alhaisen IOPS- ja läpäisykyvyn. Siksi laite voi näyttää hitaalta testissä ja nopealta tuotannossa, tai päinvastoin.

Kuinka suorittaa tallennustestaus

Säilytystestin luotettavuus riippuu sen suoritusolosuhteista. Alla oleva järjestys pitää tulokset toistettavissa.

  • Vaihe 1) Määrittele tavoite. Päätä, onko kyseessä tietokannan valmiuden varmistaminen, läpimenoajan löytäminen vai kahden laitteen vertailu. Jokainen tavoite edellyttää erilaista työmäärää, ja niiden yhdistäminen tuottaa lukuja, joille kukaan ei voi toimia.
  • Vaihe 2) Mitoita tietojoukko realistisesti. Välimuistiin mahtuva pieni työjoukko mittaa välimuistia, ei tallennustilaa. Määrän on oltava sama kuin tuotantodatan määrä tai ainakin suurempi kuin välimuisti reilusti.
  • Vaihe 3) Valitse luku-/kirjoitusyhdistelmä ja -kuvio. Satunnainen ja peräkkäinen käyttö käyttäytyvät hyvin eri tavalla samalla laitteella, kuten myös 70/30 luku-kirjoitussekoitukset ja vain kirjoitus -purskeet. Käytä sekoitusta tuotannon seurannasta oletusarvon sijaan.
  • Vaihe 4) Aseta jonon syvyys ja säikeiden määrä. Nämä ohjaavat laitteen saamaa samanaikaisuutta, joten tallenna ne jokaisen tuloksen yhteydessä – ilman niitä annettua lukua ei voida toistaa.
  • Vaihe 5) Tyhjennä välimuistit ja anna laitteen lämmetä. Poista palvelimen ja laitteen välimuistit ajojen välillä ja hylkää sitten ensimmäinen aikaväli, jotta vertailussa käytetään vakiotilalukuja ensimmäisten sijaan.
  • Vaihe 6) Juokse riittävän kauan. Lyhyet suoritusajat piilottavat kirjoituskatkoksen, joka ilmenee, kun SSD-levyn kirjoituspuskuri loppuu. Jatkuvat suoritusajat paljastavat sen.
  • Vaihe 7) Valvo koko pinoa. Tallentaa prosessorin käyttöasteen, muistin ja verkon tiedot tallennuslaskurien rinnalla, jotta muualla olevaa pullonkaulaa ei tulkita virheellisesti tallennusrajoitukseksi.
  • Vaihe 8) Toista ja vertaa. Suorita identtinen kokoonpano useammin kuin kerran ja säilytä lokit; suorituskyvyn vaihtelu koontiversioiden välillä näkyy vain tallennettua perustasoa vasten.

Koska sama periaate pätee kaikkiin kuormitukseen perustuviin mittauksiin, nämä mittaukset suunnitellaan yleensä yhdessä suorituskyvyn testaus ja ajoitettu ennen julkaisuehdokkaan jäädyttämistä.

Tallennustestaustyökalut

Työkalut voidaan jakaa kahteen ryhmään, ja useimmat tiimit tarvitsevat molempia.

  • Synteettiset I/O-generaattorit. Apuohjelmat, kuten FIOIometer ja sysbench antavat tarkasti kuvatun työmäärän — lohkon koko, luku-/kirjoitussuhde, jonon syvyys ja kesto ilmoitetaan kaikki, joten suoritus voidaan toistaa täsmälleen toisella laitteella.
  • Sovellustason lataustyökalut. Kuljettajat, kuten JMeter harjoittele itse sovellusta, jotta tallennustila näkee saman käyttöoikeusmallin, jonka oikeat käyttäjät luovat, mukaan lukien kyselysuunnitelmat ja indeksointikäyttäytymisen, jota synteettinen työkalu ei pysty toistamaan.

Operating-järjestelmän laskurit täydentävät kuvan. Olipa kuorman generoinut mikä tahansa työkalu, tallennustilaluvut on luettava prosessorin, muistin ja verkon laskurien rinnalla – useita tallennustilatestaustekniikoita, mukaan lukien vertailutestaus ja volyymitestaus, tulkitsevat tuloksen oikein, koska ne ovat riippuvaisia ​​kyseisestä täyden pinon näkymästä.

Virheitä tallennustestausta suoritettaessa

Useimmat virheelliset tallennustulokset tracpalataan pieneen määrään vältettävissä olevia virheitä.

  • Väärän palvelimen suorituskyvyn valvonta, joten numerot kuvaavat konetta, jota ei testata.
  • Tallennuslaitteiden vertailu ilman palvelimen välimuistin tyhjentämistä ensin, mikä mittaa muistia levyn sijaan.
  • Suorittimen käyttöasteen seurannan unohtaminen testauksen aikana, mikä piilottaa suorittimeen sidotun pullonkaulan tallennustilaan liittyvän oireen taakse.
  • Tallennustilan suorituskyvyn testaaminen tiedostokopiointikomennoilla, jotka ovat yksisäikeisiä, välimuistiavusteisia ja eivät toistettavia.

UKK

Volyymitestaus kasvattaa sovelluksen hallussa olevan datan määrää ja seuraa toiminnan heikkenemistä. Tallennustestaus kohdistuu sen alapuoliseen laitekerrokseen ja mittaa, kuinka nopeasti data voidaan kirjoittaa ja lukea takaisin.

Jokainen sijainti, johon sovellus kirjoittaa: datahakemistot, loki- ja väliaikaiskansiot, lähetyskohteet ja arkistopolut. Jokainen vaatii tarkistuksen, että tiedosto päätyy oikeaan paikkaan ja että vapaa tila ilmoitetaan oikein.

Mittarit pysyvät samoina, mutta varatut IOPS-rajat, purskesaldot ja kohinaiset naapurit lisätään. Aja riittävän kauan, jotta purskesaldo ehtii loppua, muuten mitattu luku heijastaa väliaikaista rajaa eikä vakaata tilaa.

Koneoppiminen mallintaa normaalit IOPS- ja latenssikäyrät ja sitten lippuajon, joka poikkeaa tietystä arvosta ennen kynnysarvon ylittymistä. Samat mallit ennustavat kapasiteetin kasvua, joten levyn loppuminen ennustetaan eikä havaita sitä tuotannossa.

GitHub Copilot luonnostelee työtiedostot, välimuistin tyhjennyskääreet ja tulosten jäsennysskriptit nopeasti. Testaaja antaa edelleen lohkon koon, jonon syvyyden ja keston, koska ne tulevat tuotannon seurannasta eivätkä mallipohjasta.

Kyseessä on pätevä testitapaus, ei onnettomuus. Sovelluksen tulisi varoittaa, hajota hallitusti ja kirjata tilanne lokiin sulkeutumisen sijaan. Palautuminen täyden levyn tilasta kuuluu... palautumistesti.

Yleensä välimuistin tila, jonon syvyys tai suorituspituus vaihtelivat niiden välillä. Myös laitteen käyttökunto on tärkeä – juuri alustettu SSD kirjoittaa nopeammin kuin useita kertoja täytetty ja uudelleenkirjoitettu SSD.

Suorituskykytestaajat yleensä suorittavat sen, ja infrastruktuurin tai tietokannan ylläpitäjät toimittavat laitekokoonpanon ja tuotantoympäristön käyttöoikeusmallit. Tulos on puolustettava vain, jos molemmat osapuolet ovat yhtä mieltä siitä, että työmäärä oli realistinen.

Tiivistä tämä viesti seuraavasti: