Rugalmas keresés

Elasticsearch legjobb gyakorlatok és a teljesítmény növelése

Elasticsearch legjobb gyakorlatok és a teljesítmény növelése
Ebben a bejegyzésben megpróbáljuk összegyűjteni a bevált gyakorlatokat, és azt is, hogy mit kell kerülni, ha az Elasticsearch-szel dolgozunk és adatokat adunk bele. Így megtudjuk, mi mindenre van szükségünk, mielőtt gondoskodnánk erről a kiváló keresőmotorról.

Elasticsearch legjobb gyakorlatok

Elkezdjük a bevált gyakorlatokkal való munkát, hogy kövessük az Elasticsearch programot, és hogy milyen problémákat okozhat, ha elkerüljük ezeket a pontokat. Kezdjük el.

Mindig határozza meg az ES leképezéseket

Egy dolog, amit az ES biztosan megtehet, az az, hogy leképezések nélkül dolgozik. Tehát, amikor elkezdi a JSON-adatok betáplálását az ES indexébe, akkor az ismétlődik az adatmezők felett, és megfelelő leképezést hoz létre. Ez közvetlennek és könnyűnek tűnik, mivel az ES maga választja ki az adattípust. Adatai alapján szükség lehet egy mezőre, amely meghatározott adattípusú lehet.

Tegyük fel például, hogy indexeli a következő dokumentumot:


"id": 1,
"title": "Az ElasticSearch telepítése az Ubuntura",
"link": "https: // linuxhint.com / install-elasticsearch-ubuntu / ",
"dátum": "2018-03-25"

Ily módon az Elasticsearch a „dátum” mezőt „dátum” típusként jelöli meg. De amikor indexeli a következő dokumentumot:


"id": 1,
"title": "ES legjobb gyakorlatok és teljesítmény",
"date": "Függőben"

Ezúttal a dátum mező típusa megváltozott, és az ES hibát vet fel, és nem teszi lehetővé a dokumentum indexelését. A dolgok megkönnyítése érdekében indexelhet néhány dokumentumot, megnézheti, mely mezőket indexeli az ES, és megragadhatja a leképezést erről az URL-ről:

GET / index_név / doc_type / _mapping

Így nem kell elkészítenie a teljes leképezést is.

Termelési zászlók

Az alapértelmezett fürtnév, amelyet az ES elindít, meghívásra kerül rugalmas keresés. Ha sok csomópont van a fürtjében, célszerű a névadási zászlókat a lehető legkövetkezetesebben tartani, például:

fürt.név: app_es_production
csomópont.név: app_es_node_001

Ettől eltekintve a csomópontok helyreállítási beállításai is sokat számítanak. Tegyük fel, hogy a fürt néhány csomópontja meghibásodás miatt újraindul, és néhány csomópont kissé újraindul más csomópontok után. Annak érdekében, hogy az adatok konzisztensek maradjanak ezen csomópontok között, futtatnunk kell egy konzisztencia programot, amely az összes fürtöt konzisztens állapotban tartja.

átjáró.10. helyreállítási_csomópontok:

Hasznos az is, ha előre megmondja a fürtnek, hogy hány csomópont lesz jelen a fürtben, és mennyi helyreállítási időre lesz szükségük:

átjáró.várható_csomópontok: 20
átjáró.helyreállítási_idő után: 7m

A helyes konfigurációval a helyreállítás, amely órákat vett volna igénybe, akár egy percet is igénybe vehet, és sok pénzt takaríthat meg bármely vállalat számára.

Kapacitás biztosítása

Fontos tudni, hogy mennyi helyet foglalnak el az adatai, és milyen sebességgel áramlik az Elasticsearchbe, mert ez dönti el, hogy mennyi RAM-ra lesz szüksége a fürt és a fő csomópont mindegyik csomópontjában.

Természetesen nincsenek speciális iránymutatások a szükséges számok eléréséhez, de megtehetünk néhány lépést, amelyek jó ötletet nyújtanak számunkra. Az egyik lépés az lesz szimulálni a használati eset. Hozzon létre egy ES fürtöt, és adja hozzá szinte ugyanolyan adatmennyiséggel, mint amire a termelési beállításoknál számíthat. A koncepció kezdje nagyban és méretezze le segíthet abban is, hogy következetes legyél abban, hogy mennyi helyre van szükség.

Nagy sablonok

Ha indexelt nagy sablonokat határoz meg, akkor mindig szembe kell néznie a sablon szinkronizálásával a fürt különböző csomópontjain. Mindig vegye figyelembe, hogy a sablont újra kell definiálni, amikor az adatmodell megváltozik. Sokkal jobb ötlet tartsa a sablonokat dinamikusan. A dinamikus sablonok automatikusan frissítik a terepi leképezéseket a korábban definiált hozzárendelések és az új mezők alapján. Ne feledje, hogy a sablonok lehető legkisebb megtartása nem helyettesíthető.

2A mlockall használata az Ubuntu szervereken

A Linux akkor használja a Csere folyamatot, amikor memóriára van szüksége az új oldalakhoz. A felcserélés lassítja a dolgokat, mivel a lemezek lassabbak, mint a memória. A mlockall Az ES konfiguráció tulajdonság azt mondja az ES-nek, hogy ne cserélje ki az oldalakat a memóriából, még akkor sem, ha egyelőre nincs szükség rá. Ez a tulajdonság a YAML fájlban állítható be:

bootstrap.mlockall: igaz

Az ES v5-ben.x + verziók, ez a tulajdonság a következőre változott:

bootstrap.memory_lock: igaz

Ha ezt a tulajdonságot használja, csak győződjön meg arról, hogy elegendő halom memóriával látja el az ES-t a -DXmx opció vagy ES_HEAP_SIZE.

Minimalizálja a frissítések feltérképezését

A fürt teljesítményét kissé befolyásolja, amikor frissítési kéréseket készít az ES fürtjén. Ha nem tudja ezt ellenőrizni, és még mindig frissíteni kívánja a leképezéseket, használhat egy tulajdonságot az ES YAML konfigurációs fájlban:

indexek.fürt.send_refresh_mapping: hamis

Amikor a modellfrissítési kérelem várakozási sorban van a fő csomópont számára, és a régi leképezéssel együtt adatokat küld a csomópontokhoz, később frissítési kérelmet is el kell küldenie az összes csomópontnak. Ez lassíthatja a dolgokat. Amikor a fenti tulajdonságot hamisra állítjuk, ennek értelme van annak, hogy frissítés történt a leképezésen, és nem küldi el a frissítési kérelmet a csomópontoknak. Vegye figyelembe, hogy ez csak akkor hasznos, ha rendszeresen sok változtatást hajt végre a leképezéseken.

Optimalizált szálkészlet

Az ES csomópontok sok szálkészlettel rendelkeznek annak érdekében, hogy javítsák a szálak kezelését egy csomóponton belül. De vannak korlátozások, hogy az egyes szálak mennyi adatot tudnak kezelni. Ennek az értéknek a nyomon követéséhez használhatunk ES tulajdonságot:

threadpool.ömlesztve.queue_size: 2000

Ez tájékoztatja az ES-t a szilánkokon szereplő kérelmek számáról, amelyek a csomópontban végrehajtási sorba kerülhetnek, amikor nincs elérhető szál a kérés feldolgozásához. Ha a feladatok száma meghaladja ezt az értéket, akkor a RemoteTransportException. Minél nagyobb ez az érték, annál nagyobb mennyiségű halomterületre lesz szükség a csomópont-gépen, és a JVM-halom is elfogyasztásra kerül. Ezenkívül készen kell tartania a kódot arra az esetre, ha ezt a kivételt elvetik.

Következtetés

Ebben a leckében megvizsgáltuk, hogyan javíthatjuk az Elasticsearch teljesítményét azáltal, hogy elkerüljük az emberek által elkövetett gyakori és nem túl gyakori hibákat. További elasticsearch cikkek a LinuxHint-en.

Az OSD-fedvény megjelenítése teljes képernyős Linux-alkalmazásokban és játékokban
Teljes képernyős játékok lejátszása vagy alkalmazások figyelemelterelés nélküli, teljes képernyős módban történő használata elvághatja a panelen vagy ...
Az 5 legjobb játékrögzítő kártya
Mindannyian láttuk és szerettük a YouTube-on a streaming játékokat. A PewDiePie, a Jakesepticye és a Markiplier csak néhány a legnépszerűbb játékosok ...
Hogyan lehet játékot fejleszteni Linuxon
Egy évtizeddel ezelőtt nem sok Linux-felhasználó jósolta, hogy kedvenc operációs rendszerük egy napon a videojátékok népszerű játékplatformja lesz. El...