a sírkövekkel kapcsolatos tapasztalatok az Apache Cassandra-ban

a sírkövek észlelése és megelőzése

a sírkövek naplókban és speciális mutatók megfigyelésével észlelhetők. Élettartamukat a gc_grace_seconds táblázat határozza meg.

Tune table settings

  • gc_grace_seconds

a gc_grace_seconds alapértelmezett beállítása 864000 (10 nap). Számunkra volt értelme ezt az értéket 345600-ra (4 napra) csökkenteni. Abban az esetben, ha úgy dönt, hogy megváltoztatja a türelmi időt, győződjön meg róla, hogy a javításokat ezen időtartamon belül hajtja végre.

egyszerűen megváltoztathatja a meglévő táblák értékét, vagy létrehozhat egy új táblát:

Táblázat létrehozása kulcstér.tablename val vel GC_GRACE_SECONDS = 345600;

ALTER TABLE kulcstér.tablename WITH GC_GRACE_SECONDS = 345600;

  • TTL

miután a TTL átlépte a meghatározott időtartományt, a sorok törlődnek, és az értékek sírkövekké alakulnak. Alapértelmezés szerint a sorok/értékek nem járnak le.

miközben a sírkő problémákat tapasztaltuk, rájöttünk, hogy növelnünk kell az asztalok élettartamának idejét. Azáltal, hogy ezt az értéket 1 napokra állította, az írási feladatok elmulasztása azt eredményezte, hogy az összes adatot egyszerre törölte a táblázatból. A hiányzó frissítések miatt minden sort sírkővel jelöltek meg. Az érték magasabb beállítása lehetővé teszi számunkra, hogy időben újrafuttassuk a munkákat, és elkerüljük a nagy mennyiségű sírkő felesleges létrehozását.

  • tombstone_warn_threshold

a sírkő küszöbértékre vonatkozó figyelmeztetés alapértelmezés szerint 1.000-re van állítva, és a naplókban akkor jelenik meg, ha egyetlen lekérdezés több mint 1.000 sírkövet vizsgál.

  • tombstone_failure_threshold

a sírkő meghibásodási küszöbértéke akkor érhető el, ha egyetlen lekérdezés 100 000 sírkövet vizsgál. Ebben az esetben a lekérdezés megszakad, ami azt jelenti, hogy az érintett tábla adatait már nem lehet lekérdezni.

ezek a küszöbérték-beállítások megváltoztathatók, de ne feledje, hogy ha növeli őket, akkor a csomópontok memóriája elfogy.

rendszeres javítások futtatása

a Cassandra nagy hibatűréssel rendelkezik, és akkor is jól működik, ha egy csomópont ideiglenesen nem érhető el. Ennek ellenére a legjobb gyakorlat a nodetool javítás futtatása csomópont meghibásodása után. Különösen, ha minden áron el akarja kerülni az adatvesztést.

a javítási folyamat során a nem elérhető csomópont megkapja az állásidő alatt történt írásokat.

ez egy jó megközelítés a javítások futtatásához a gc_grace_seconds-en belül és rendszeresen, különben előfordulhat, hogy a törölt adatok feltámadnak.

a javítások automatikus futtatásának néhány módja van. Az egyik Cassandra Reaper. Ez az eszköz egy szép felhasználói felülettel rendelkezik, amely megkönnyíti a javítások ütemezését.

írta: Cassandra Reaper

konfigurálja és futtassa a tömörítést

a sírkövek végleges eltávolításához és a lemezterület felszabadításához a tömörítést aktiválni kell. Különböző típusú tömörítések vannak. A kisebb tömörítés végrehajtja a tömörítést az összes sstables – en, és automatikusan fut a Cassandra-ban. Eltávolítja az összes sírkövet, amely régebbi, mint a türelmi idő. Ha manuálisan indítja el a tömörítést az összes sstables felett, akkor azt major tömörítésnek nevezik. Ne feledje, hogy a tömörítést minden egyes csomópontra külön-külön kell kiváltani. Arra is van lehetőség, hogy fut egy felhasználó által definiált tömörítés csak egy csoport meghatározott sstables.

az adatok tömörítése C* – ban általában azt jelenti, hogy az sstables-t egyetlen új sstable-be kell egyesíteni. Ha több sorban olvas, minél több sstables-t kell beolvasni, annál lassabb lesz a folyamat. Ennek megakadályozása érdekében a tömörítésnek rendszeresen futnia kell.

a tömörítés kézi indításához használhatja a nodetool compact alkalmazást. Abban az esetben, ha nem ad meg kulcsteret vagy táblát, a tömörítés az összes kulcstéren és táblán fut.

nodetool compact keyspace tablename

ez a parancs elindítja a tömörítést a megadott táblán. Meg kell találnia, hogy melyik tömörítési stratégia van konfigurálva a táblákhoz, és hasonlítsa össze az alternatív stratégiákkal. Ha meg akarja tudni, hogy egy másik stratégia jobban megfelel-e az Ön igényeinek, akkor nézze meg a DataStax dokumentációt.

Monitor táblázat mutatók

1. Nodetool

a Nodetool a Cassandra parancssori felülete. Jól jön, ha többet szeretne megtudni a klaszterek teljesítményéről. Megnézheti a DataStax által biztosított lehetséges parancsok teljes listáját.

a Nodetool parancsokat minden egyes csomóponthoz külön kell végrehajtani. A C* – ot a Kubernetes-en futtatjuk, így a következőképpen nyithatunk meg egy héjat a futó Cassandra pod számára:

kubectl exec-it cassandra-0-n ajánlom bash

ettől a ponttól kezdve a nodetool segítségével különféle információkat szerezhetünk a tábláinkról. A nodetool tablestats parancs végrehajtható az egyes kulcsterek vagy táblák statisztikáinak nyomtatásához:

az ‘átlagos sírkövek szeletenként’ és a ‘maximális sírkövek szeletenként’ értékek megmutatják, hogy lekérdezésenként hány sírkövet szkenneltek be az elmúlt öt percben. Ha úgy látja, hogy ez az érték nagyon magas, akkor előfordulhat, hogy gyakrabban kell futtatnia a tömörítést az adott táblához.

2. SSTable Tools

az SSTable Tools végrehajtása előtt a Cassandra-t le kell állítani. Az sstableutil parancs megadja az adott táblához létező sstable fájlok listáját. Az sstablemetadata végrehajtása ezeken a fájlokon hasznos információkat nyújt a megadott tábláról, például a TTL-ről és a csepegtethető sírkövek becsléséről.

3. Prometheus és Grafana

a C* megfigyelését a Prometheus és a Grafana végzi. Miután megkaptuk a sírkövek küszöbértékére vonatkozó figyelmeztetéseket, úgy döntöttünk, hogy hozzáadunk egy panelt az irányítópultunkhoz, amely képet ad nekünk az egyes táblázatok sírkő viselkedéséről.

Cassandra rendelkezik egy ‘TombstoneScannedHistogram’ nevű táblázatos mutatóval, amely bemutatja a sírkövek hisztogramját, amelyet lekérdezésenként beolvastak. A 99. percentilis bemutatásával meglátjuk, hogy valami nincs-e rendben.

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.