Elastīgā meklēšana

Elasticsearch paraugprakse un veiktspējas palielināšana

Elasticsearch paraugprakse un veiktspējas palielināšana
Šajā ziņojumā mēs centīsimies apkopot labāko praksi un arī no tā, no kā jāizvairās, strādājot ar Elasticsearch un tajā ievadot datus. Tādā veidā mēs zināsim, kādas lietas mums jārūpējas, pirms mēs pat sākam strādāt ar šo izcilo meklētājprogrammu.

Elasticsearch paraugprakse

Mēs sāksim strādāt ar paraugpraksi, kas jāievēro, izmantojot Elasticsearch, un kādas problēmas tas var radīt, izvairoties no šiem punktiem. Sāksim.

Vienmēr definējiet ES kartējumus

Viena lieta, ko ES noteikti var darīt, ir strādāt bez kartēšanas. Tātad, kad jūs sākat barot JSON datus savā ES indeksā, tas atkārtosies datu laukos un izveidos piemērotu kartēšanu. Tas šķiet tieši un viegli, jo ES pati izvēlas datu tipu. Pamatojoties uz jūsu datiem, jums var būt nepieciešams lauks, kas ir noteikta veida.

Piemēram, pieņemsim, ka indeksējat šo dokumentu:


"id": 1,
"title": "Instalējiet ElasticSearch Ubuntu",
"link": "https: // linuxhint.com / install-elasticsearch-ubuntu / ",
"datums": "2018-03-25"

Tādā veidā Elasticsearch atzīmēs lauku “datums” kā “datuma” veidu. Bet, indeksējot šo dokumentu:


"id": 1,
"title": "ES paraugprakse un veiktspēja",
"date": "Gaida"

Šoreiz datuma lauka tips ir mainīts, un ES radīs kļūdu un neļaus indeksēt jūsu dokumentu. Lai viss būtu vieglāk, varat indeksēt dažus dokumentus, uzzināt, kādus laukus indeksē ES, un paņemt kartēšanu no šī URL:

GET / index_name / doc_type / _mapping

Tādā veidā jums nebūs jākonstruē arī pilnīga kartēšana.

Ražošanas karogi

Tiek izsaukts noklusējuma klastera nosaukums, kuru sāk ES elasticsearch. Ja klasterī ir daudz mezglu, ieteicams saglabāt pēc iespējas konsekventākus nosaukšanas karodziņus, piemēram:

kopa.nosaukums: app_es_production
mezgls.nosaukums: app_es_node_001

Bez tam, arī mezglu atkopšanas iestatījumiem ir liela nozīme. Pieņemsim, ka daži klastera mezgli tiek restartēti kļūmes dēļ, un daži mezgli tiek restartēti nedaudz pēc citiem mezgliem. Lai saglabātu datu konsekvenci starp visiem šiem mezgliem, mums būs jāpalaiž konsekvences programma, kas visus klasterus uzturēs konsekventā stāvoklī.

vārti.atgūt_pēc_mezglus: 10

Noderīgi ir arī tas, ja klasterim iepriekš pasakāt, cik mezglu būs klasterī un cik daudz atkopšanas laika būs nepieciešams:

vārti.paredzamie_mezgli: 20
vārti.atkopšanas_pēc_laiks: 7m

Izmantojot pareizu konfigurāciju, atkopšana, kas prasītu stundas, var aizņemt tikai minūti un var ietaupīt daudz naudas jebkuram uzņēmumam.

Jaudas nodrošināšana

Ir svarīgi zināt, cik daudz vietas aizņems jūsu dati, un ātrumu, kādā tie ieplūst Elasticsearch, jo tas izlems, cik daudz RAM jums būs nepieciešams katrā klastera mezglā un galvenajā mezglā.

Protams, nav īpašu vadlīniju nepieciešamo skaitļu sasniegšanai, taču mēs varam veikt dažus soļus, kas mums sniedz labu ideju. Viens no soļiem būs simulēt lietošanas gadījums. Izveidojiet ES kopu un ievadiet to ar gandrīz tādu pašu datu ātrumu, kā jūs varētu sagaidīt, veicot ražošanas iestatījumus. Jēdziens sākt lielu un samazināt var arī palīdzēt jums konsekventi noteikt, cik daudz vietas ir nepieciešams.

Lielas veidnes

Definējot indeksētas lielas veidnes, vienmēr saskaras ar problēmām, kas saistītas ar veidnes sinhronizēšanu dažādos klastera mezglos. Vienmēr ņemiet vērā, ka veidne būs jāpārdefinē ikreiz, kad notiek datu modeļa maiņa. Tā ir daudz labāka ideja saglabājiet veidnes kā dinamiskas. Dinamiskās veidnes automātiski atjaunina lauku kartējumus, pamatojoties uz iepriekš definētajiem kartējumiem un jaunajiem laukiem. Ņemiet vērā, ka nevar aizstāt veidnes pēc iespējas mazākas.

2Milockall izmantošana Ubuntu serveros

Ja Linux prasa atmiņu jaunām lapām, Linux izmanto maiņas procesu. Mainīšana padara lietas lēnākas, jo diski ir lēnāki nekā atmiņa. The mlockall rekvizīts ES konfigurācijā liek ES nemainīt savas lapas no atmiņas, pat ja tās pašlaik nav vajadzīgas. Šo rekvizītu var iestatīt YAML failā:

bootstrap.mlockall: taisnība

ES v5.x + versijas, šis rekvizīts ir mainīts uz:

bootstrap.memory_lock: taisnība

Ja izmantojat šo īpašumu, vienkārši pārliecinieties, vai esat nodrošinājis ES pietiekami lielu kaudzes atmiņu, izmantojot -DXmx opcija vai ES_HEAP_SIZE.

Samaziniet kartēšanas atjauninājumus

Klastera veiktspēja tiek nedaudz ietekmēta ikreiz, kad savā ES klasterī veicat kartēšanas atjaunināšanas pieprasījumus. Ja jūs to nevarat kontrolēt un tomēr vēlaties atjaunināt kartējumus, varat izmantot rekvizītu ES YAML konfigurācijas failā:

indeksi.kopa.send_refresh_mapping: false

Kad modeļa atjaunināšanas pieprasījums ir galvenā mezgla gaidīšanas rindā un tas nosūta mezgliem datus ar veco kartējumu, vēlāk visiem mezgliem ir jānosūta atjaunināšanas pieprasījums. Tas var palēnināt lietas. Kad mēs iestatām iepriekš minēto rekvizītu uz false, tas nozīmē, ka kartēšana ir atjaunināta, un tas nesūtīs atjaunināšanas pieprasījumu mezgliem. Ņemiet vērā, ka tas ir noderīgi tikai tad, ja regulāri veicat daudz izmaiņu kartējumos.

Optimizēts Thread-pool

ES mezgliem ir daudz pavedienu kopu, lai uzlabotu pavedienu pārvaldību mezglā. Bet ir ierobežojumi attiecībā uz to, cik daudz datu var rūpēties katrs pavediens. Lai izsekotu šai vērtībai, mēs varam izmantot ES rekvizītu:

threadpool.beztaras.queue_size: 2000

Tas informē ES par to gabalu pieprasījumu skaitu, kurus var rindā izpildīt mezglā, ja nav pieejams pavediens pieprasījuma apstrādei. Ja uzdevumu skaits pārsniedz šo vērtību, jūs saņemsit RemoteTransportException. Jo augstāka šī vērtība, jo lielāks kaudzes vietas daudzums būs nepieciešams jūsu mezglu mašīnā, un tiks iztērēta arī JVM kaudze. Jums vajadzētu arī saglabāt savu kodu gatavu, ja tiek izmests šis izņēmums.

Secinājums

Šajā nodarbībā mēs apskatījām, kā mēs varam uzlabot Elasticsearch veiktspēju, izvairoties no parastām un ne tik bieži pieļautām kļūdām. Lasiet vairāk rakstu Elasticsearch par LinuxHint.

OpenTTD apmācība
OpenTTD ir viena no populārākajām biznesa simulācijas spēlēm. Šajā spēlē jums ir jāizveido brīnišķīgs transporta bizness. Tomēr jūs sāksit sākumā apmē...
SuperTuxKart operētājsistēmai Linux
SuperTuxKart ir lielisks nosaukums, kas paredzēts, lai sniegtu jums Mario Kart pieredzi bez maksas jūsu Linux sistēmā. Tas ir diezgan izaicinoši un ja...
Cīņa par Vesnota apmācību
Cīņa par Vesnotu ir viena no populārākajām atvērtā koda stratēģijas spēlēm, kuru jūs varat spēlēt šajā laikā. Šī spēle ir izstrādāta ne tikai ļoti ilg...