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_productioncsomó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: igazAz ES v5-ben.x + verziók, ez a tulajdonság a következőre változott:
bootstrap.memory_lock: igazHa 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: hamisAmikor 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: 2000Ez 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.