kokemukset apassi Cassandran hautakivistä
havaitse ja estä hautakivet
Hautakivet voidaan havaita lokitiedoista ja seuraamalla tarkkoja mittareita. Niiden elinikä määritellään taulukossa gc_grace_seconds.
Viritä taulukon asetukset
- gc_grace_seconds
oletusasetus gc_grace_secondsille on 864000 (10 päivää). Meille oli järkevää laskea tämä arvo 345600 (4 päivää). Jos päätät muuttaa lyhennysvapaata aikaa, varmista, että korjaukset suoritetaan kyseisen ajan kuluessa.
voit muuttaa olemassa olevien taulukoiden arvoa tai luoda uuden taulukon näin:
luo taulukon avaintilaa.tablename WITH GC_GRACE_SECONDS = 345600;
ALTER TABLE keyspace.tablename WITH GC_GRACE_SECONDS = 345600;
- TTL
kun TTL on ylittänyt määritellyn aikajänteen, rivit poistetaan ja arvot muutetaan hautakiviksi. Oletusarvoisesti rivit / arvot eivät vanhene.
hautakiviongelmia koettaessamme tajusimme, että meidän on lisättävä pöytiemme elinaikaa. Kun tämä arvo asetettiin 1 ½ päivään, epäonnistuneet kirjoitustyöt aiheuttivat sen, että kaikki tiedot poistettiin taulukosta kerralla. Puuttuvien päivitysten vuoksi jokainen rivi oli merkitty hautakivellä. Arvon asettaminen korkeammalle antaa meille mahdollisuuden uusia työpaikkoja ajoissa ja välttää suuren hautakivimäärän tarpeetonta luomista.
- tombstone_warn_threshold
hautakiven kynnysvaroitus on oletusarvoisesti 1 000 ja se tulee näkyviin lokitietoihin, jos yhdellä kyselyllä skannataan yli 1 000 hautakiveä.
- tombstone_failure_kynnys
hautakiven vikaantumiskynnys saavutetaan, kun 100 000 hautakiveä skannataan yhdellä kyselyllä. Tässä tapauksessa kysely keskeytetään, eli tietoja kyseisestä taulukosta ei voida enää kysellä.
näitä kynnysasetuksia voi muuttaa, mutta huomaa, että jos korotat niitä, se voi johtaa siihen, että solmut loppuvat muistista.
Suorita säännölliset korjaukset
Cassandran vikasietoisuus on korkea ja se toimii hyvin, vaikka solmu olisi tilapäisesti poissa käytöstä. Kuitenkin, se on paras käytäntö ajaa nodetool korjaus jälkeen solmu vika. Varsinkin jos haluat välttää tietojen häviämisen hinnalla millä hyvänsä.
korjausprosessin aikana poissa ollut solmu saa seisokin aikana tapahtuneet kirjoitukset.
on hyvä tapa suorittaa korjauksia gc_grace_sekuntien sisällä ja säännöllisesti, muuten saatat kokea tapauksia, joissa poistetut tiedot herätetään henkiin.
on olemassa pari tapaa suorittaa korjaukset automaattisesti. Yksi heistä on Cassandra Reaper. Tämä työkalu tulee mukava UI, joka on helppo ajoittaa korjauksia.
Configure and run compaction
to finally remove tombstones and free of disk space, compaction needs to be launch. Tiivistyksiä on erilaisia. Minor tiivistys suorittaa tiivistys yli kaikki sstables ja toimii automaattisesti Cassandra. Se poistaa kaikki armonaikaa vanhemmat hautakivet. Jos käynnistät tiivistyksen manuaalisesti kaikkien sstables sitä kutsutaan major tiivistys. Muista, että tiivistyminen on käynnistettävä jokaiselle solmulle erikseen. Sinulla on myös mahdollisuus ajaa käyttäjän määrittämän tiivistyksen vain ryhmälle määritettyjä sstables.
tietojen tiivistäminen C*: ssä tarkoittaa yleensä sek-vakuuksien yhdistämistä yhdeksi uudeksi vakuudeksi. Suoritettaessa lukee useilla riveillä, enemmän sstables täytyy skannata, hitaampi prosessi saa. Jotta näin ei tapahtuisi, tiivistyksen on pyörittävä säännöllisesti.
voit aloittaa tiivistämisen manuaalisesti nodetool compact – ohjelmalla. Jos et määritä avaintilaa tai taulua, tiivistys suoritetaan kaikilla avaintiloilla ja pöydillä.
nodetool compact keyspace tablename
tämä komento aloittaa tiivistyksen annetusta taulukosta. Sinun pitäisi selvittää, mikä tiivistysstrategia on määritetty taulukoita ja verrata sitä vaihtoehtoisia strategioita. Jos haluat selvittää, vastaako jokin muu strategia tarpeitasi paremmin, voit tutustua Datastaxin dokumentaatioon.
Monitoritaulukon metriikka
1. Nodetool
Nodetool on Cassandran komentorivin käyttöliittymä. Se on kätevä, jos haluat selvittää lisää klustereiden suorituskykyä. Voit tarkistaa koko luettelon mahdollisista komennoista datastax.
Nodetool-komennot on suoritettava jokaiselle solmulle erikseen. Ajamme C* Kubernetes jotta voimme avata kuori käynnissä Cassandra pod seuraavasti:
kubectl exec-it cassandra-0-n recommend bash
tästä pisteestä Voimme käyttää nodetool saada erilaisia tietoja taulukoistamme. Komennolla nodetool tablestats voidaan tulostaa tilastoja yksittäisille avainpaikoille tai taulukoille:
arvot “keskimääräiset hautakivet viipaletta kohti” ja “Enimmäishautakivet viipaletta kohti” kertovat, kuinka monta hautakiveä on skannattu kyselyä kohden viimeisen viiden minuutin aikana. Jos näet tämän arvon olevan hyvin korkea, saatat joutua suorittamaan tiivistyksen useammin kyseiseen taulukkoon.
2. SSTable Tools
ennen kuin SSTable Tools suoritetaan Cassandra on pysäytettävä. Sstableutil-komento antaa sinulle luettelon sstable-tiedostoista, jotka ovat olemassa tiettyä taulua varten. Suoritetaan sstablemetadata näistä tiedostoista, antaa sinulle hyödyllistä tietoa määritetystä taulukosta, kuten esimerkiksi TTL ja arvio pudotettavissa hautakiviä.
3. Prometheus ja Grafana
C*: n seuranta on järjestetty Prometheuksen ja Grafanan kanssa. Saatuaan hautakivien kynnysvaroitukset päätimme lisätä kojelautaamme paneelin, joka antaa meille käsityksen hautakiven käyttäytymisestä jokaisessa pöydässämme.
Cassandralla on “Tombstonescannedhistogrammi” – niminen taulukkometri, joka esittää hautakivien histogrammin, joka skannataan kyselyä kohden. Näyttämällä 99. prosenttipistettä näemme, onko jokin vialla.