Еластична претрага у производњи - Најбоље праксе примене

Еластицсеарцх је високо оптимизовани претраживач за савремену анализу података.

Еластицсеарцх је невероватна машина за претрагу и аналитику у реалном времену. Изграђен је на Апацхе Луцене. Дистрибуира се, ОДНОСНО, лако се користи и врло је доступно. Случајеви коришћења еластичног претраживања укључују покретање претраживања, надгледање трансакција и откривање грешака, откривање садржаја, анализу дневника, нејасну претрагу, обједињавање података о догађајима, визуализацију података. Еластицсеарцх и остатак Еластиц Стацк-а показали су се изузетно свестраним, а као што можете видети изнад случајева употребе, постоји више начина да интегрирате Еластицсеарцх у оно што ваш производ данас нуди и додате му додатни увид.

Снажно га користимо за претрагу и аналитику на Ботметриц-у, индексирамо око милијарду докумената дневно и користимо врло сложене агрегације за визуелизацију података у стварном времену.

То је речено, покретање апликације у односу на покретање у производњи и одржавање су потпуно различите. Ова чаура покрива многе од ових фактора из стварних животних искустава и основне су ставке које бисте требали размотрити за покретање еластичне претраге у производњи.

Меморија:

Еластицсеарцх и Луцене су написани на Јави, што значи да морате пазити на хепспаце и ЈВМ статистику. Што је више хрпе доступно Еластицсеарцх-у, више меморије коју може користити за филтрирање и друго кеширање за повећање перформанси упита. Али имајте на уму да превише гомиле може да вас подвргне дугим паузама прикупљања смећа. Не постављајте Ксмк изнад пресека који ЈВМ користи за компримиране показиваче објекта (компримовани оопс); тачан пресек варира, али износи близу 32 ГБ.

Чест проблем је конфигурисање превелике хрпе. Имате машину од 64 ГБ - и, хвала, желите Еластицсеарцху да дате свих 64 ГБ меморије. Још је боље! Хеап је дефинитивно важан за Еластицсеарцх. Користе га многе структуре података у меморији за брзи рад. Али уз то речено, постоји још један главни корисник меморије који је искључен из кеша: ОС кеш датотека.

Луцене је дизајниран да користи основни ОС за кеширање података у меморији. Луценски сегменти се чувају у појединачним датотекама. Пошто су сегменти непроменљиви, ове датотеке се никада не мењају. То их чини врло пријатним за кеш, а основни ОС ће радо задржати вруће сегменте који остану у меморији за бржи приступ. Ови сегменти укључују и обрнути индекс (за претраживање пуног текста) и доц вредности (за здруживање). Луценове перформансе се ослањају на ову интеракцију са ОС-ом. Али ако дате сву доступну меморију на хрпу Еластицсеарцх-а, неће преостати ништа за кеш датотека ОС-а. То може озбиљно утицати на перформансе. Стандардна препорука је да 50% слободне меморије дате групи хрпа Еластицсеарцх, док осталих 50% оставите слободнима. Неће се искористити; Луцене ће радо конзумирати све што преостане за кеш датотеке. Еластицсеарцх хеап може да се конфигурише на следеће начине,

извоз ЕС_ХЕАП_СИЗЕ = 10г

или

ЕС_ЈАВА_ОПТС = "- Ксмс10г -Ксмк10г" ./бин/еластицсеарцх

ПРОЦЕСОРИ:

Еластицсеарцх подржава здруживање и филтриране упите. За покретање сложених филтрираних упита, интензивно индексирање, перколација и упити против индекса потребан је тежак ЦПУ, тако да је одабир правог кључан. Морате разумјети спецификације ЦПУ-а и како се понашају са Јавом док се упити покрећу на ЈВМ-у.

Сваки базен покреће низ нити које се могу конфигурисати и имају ред чекања. Промена ове вредности није препоручљива осим ако немате сасвим специфичне захтеве јер Еластицсеарцх динамички додељује језгре.

Типови базе навоја:

Еластицсеарцх има 3 врсте навоја базена.

  1. Спремање у предмеморију: Спремљени меморијски низ нити је неограничени низ нити који ће извести нит ако постоје захтеви на чекању. Овај низ нити се користи за спречавање блокирања или одбијања захтева послатих у овај базен. Неискориштене нити у овом низу нити ће бити окончане након што истекне стање одржавања (подразумевано пет минута). Спремљени низ спремљених нити резервиран је за генерички низ нити.
  2. Фиксно: Спремник фиксних нити садржи фиксну величину нити за обраду захтева са редом (опционо ограничен) за чекање захтева који немају нити да их сервисирају. Параметар величине контролира број нити и подразумева се број језгара 5 пута.
  3. Скалирање: Базен за скалирање нити садржи динамички број нити. Овај број је пропорционалан радном оптерећењу и варира између 1 и вредности параметра величине.

Еластицсеарцх дели поделу ЦПУ-а у низове различитих врста:

  • генерички: за стандардне операције као што су откривање и тип базе података се спрема у предмеморију.
  • индекс: за операције индексирања / брисања. Врста базе навоја је фиксна.
  • претрага: за бројање / претраге. Врста базе навоја је фиксна.
  • гет: за добивање операција. Врста базе навоја је фиксна.
  • скупно: за скупне операције као што су скупно индексирање. Врста базе навоја је фиксна. Најбоља конфигурација скупних докумената зависи од конфигурације кластера, а то се може препознати испробавањем више вриједности.
  • перкола: за перколацију. Врста базе навоја је фиксна.
  • рефресх: За операције освежавања. Врста базе навоја је скалирање.

Промјена одређеног скупа нити може се извршити постављањем његових параметара специфичних за тип.

Прочитајте више хттпс://ввв.еластиц.цо/гуиде/ен/еластицсеарцх/референце/2.2/модулес-тхреадпоол.хтмл#типес

Величина оштрице:

Схард је јединица на којој Еластицсеарцх дистрибуира податке унутар кластера. Брзина којом Еластицсеарцх може помицати комадиће приликом ребалансирања података, нпр. након квара, зависиће од величине и броја комада, као и перформанси мреже и диска.

У Еластицсеарцх-у се сваки упит извршава у једној нити по делу. Међутим, више комада се може обрадити паралелно, као и више упита и здруживања против истог дела.

То значи да ће минимална латенција упита, када није укључено предмеморирање, зависити од података, врсте упита, као и од величине дељења. Упити пуно малих комада убрзат ће обраду по дјелићу, али како је потребно још много задатака у реду и обрађивати редослијед, то не мора бити брже од упита мањег броја већих комада. Имајући пуно малих комада такође може умањити пропусност упита ако постоји више истодобних упита.

Сваки дио има податке које је потребно сачувати у меморији и користити хеап простор. Ово укључује структуре података које садрже информације на нивоу сегмента, а такође и на нивоу сегмента како би се дефинисало где се подаци налазе на диску. Величина ових структура података није фиксна и варираће овисно о употреби. Важна карактеристика сегмента који се односи на режијске трошкове је међутим да није строго сразмеран величини сегмента. То значи да већи сегменти имају мање режијских трошкова по обиму података у поређењу с мањим сегментима. Разлика може бити знатна. Избор правог броја комадића је компликован јер никад не знате колико ћете докумената добити пре него што започнете. Имати пуно комада може бити добро и ужасно за грозд. Управљање индексима и комадима може преоптеретити главни чвор, што може постати не реагирајући, што доводи до необичног и гадног понашања. Додијелите главним чворовима довољно ресурса да се носе с величином кластера.

Лоша ствар је што је број комада непроменљив и он се дефинише када креирате индекс. Једном када се креира индекс, једини начин за промену броја комада је да обришете своје индексе, креирате их поново и поново поставите поново.

Репликација

Еластицсеарцх подржава репликацију, подаци се реплицирају међу чворовима података тако да губитак чвора не би довео до губитка података. Фактор репликације је подразумевано 1, али у зависности од потреба вашег производа може се повећати. Што више реплика има, ваши ће подаци бити отпорнији на катастрофе. Још једна предност постојања више реплика је та што сваки чвор садржи реплику реплике, што побољшава перформансе упита јер се и реплике користе за постављање упита.

Формула репликације коју Еластицсеарцх користи за доследност је,

(примарни + број_оплика) / 2 + 1

Оптимизација расподеле

На основу захтева за подацима о производу можемо класификовати податке у топле и хладне. Индексима којима се приступа чешће него другима, може се доделити више чворова података док индекси којима је индексима мање приступан могу бити додељени мање ресурса. Ова стратегија је посебно корисна за чување података временских серија попут дневника апликација (нпр .: ЕЛК).

То се може постићи покретањем кроњоба који у правилним интервалима помера индексе у различите чворове.

Врући чвор је врста податковног чвора који врши сву индексирање унутар кластера. Они такође држе најновије индексе, јер се најчешће најчешће испитују. Будући да је индексирање ЦПУ и ИО интензивног рада, ови сервери морају бити снажни и подржани прикљученом ССД меморијом. Препоручујемо покретање најмање 3 топла чвора за високу доступност. Зависно од количине недавних података које желите да прикупите и упитате, можда ће вам требати да повећате овај број да бисте постигли своје циљеве у вези са перформансама.

Топли чвор је тип чвора података који је дизајниран да обрађује велику количину индекса само за читање за које није вероватно да ће се често испитивати. Како су ови индекси доступни само за читање, топли чворови користе велике приложене дискове (обично вртеће дискове) уместо ССД-ова. Као и код врућег чвора, препоручујемо најмање 3 Топла чвора за велику доступност. Као и раније, уз упозорење да веће количине података могу захтијевати додатне чворове да би се задовољили захтјеви за перформансама. Такође имајте на уму да ће конфигурације ЦПУ-а и меморије често требати да одражавају оне ваших врућих чворова. Ово се може утврдити само тестирањем са упитима сличним ономе што бисте имали у производној ситуацији.

Више детаља о топлом и топлом чвору потражите овде.

Друга стратегија коју можете прилагодити је архивирање индекса на с3 и враћање када су вам потребни подаци из тих индекса. Више о томе можете прочитати овде.

Топологија чвора:

Чврсти еластични чворови се могу поделити у три категорије главни чвор, чвор података, чвор клијента.

  1. Главни чвор: Главни чвор може бити мали ако није превише Дата чвор јер не спрема индексе / комадиће. Његова одговорност је спремање детаљног стања кластера и помоћ подацима и другим чворовима у претраживању мета-података индекса / изоштрених података. Еластицсеарцх би требао имати више главних чворова како би се избјегао подијељени проблем мозга.
  2. Чвор података: Чвор података одговоран је за спремање / испитивање стварних података индекса.
  3. Клијентов чвор: Клијентов чвор користи се као проки за индексирање и претраживање. Ово се високо препоручује ако се агрегације јако користе. Ово су специјални чворови ЕластицСеарцх који нису прихватљиви ни за податке ни за мастер. Клијентски чворови су свјесни кластера и због тога могу дјеловати као паметни уравнотежитељи оптерећења. Можете послати упите клијентским чворовима који могу преузети скупи задатак прикупљања одговора на резултате упита из сваког од чворова података.

додајте ове поставке у датотеку еластике.имл за одговарајуће чворове.

Главни чвор: ноде.мастер: истински ноде.дата:фалсе
Дата чвор: ноде.мастер: лажни ноде.дата:труе
Клијентов чвор: ноде.мастер: лажни ноде.дата:фалсе

Савети за решавање проблема:

Перформансе еластичне претраге јако зависе од машине на којој је инсталиран. ЦПУ, Употреба меморије и Улазно / излазни диск су основне метрике оперативног система за сваки чвор Еластицсеарцх. Препоручује се да погледате метрике Јава Виртуал Мацхине (ЈВМ) када употреба ЦПУ-а скочи. У следећем примеру, разлог за шиљак је била већа активност одвоза смећа.

  1. Притисак у хемији: Високи меморијски притисак делује против перформанси кластера на два начина: Како се меморијски притисак повећава на 75% и више, мање меморије остаје на располагању, а ваш кластер сада мора да потроши и неколико ресурса ЦПУ-а да би се поново ухватио у меморију кроз одвоз смећа. Ови циклуси ЦПУ-а нису доступни за руковање корисничким захтевима док је смеће укључено. Као резултат тога, време одговора на корисничке захтеве се повећава јер систем постаје све више и више ограничен ресурсима. Ако притисак у меморији и даље расте и достигне скоро 100%, користиће се много агресивнији облик одвоза смећа, што ће заузврат драматично утицати на реакције кластера. Метрика индекса Респонсе Тимес показује да високи меморијски притисак доводи до значајног утицаја на перформансе.
  2. Раст ЈВМ-ове невелике меморије, једење меморије намењене кеширању страница и могуће проузроковање жетве ООМ-а на нивоу кернела.
  3. Избегавајте раздвојене мождане проблеме. Подијељени мозак је сценариј гдје се кластер дијели. На пример, имате 6 чворова. 2 чвора се искључују из кластера, али још увек се могу видети. Ова два чвора затим стварају други кластер. Они ће чак изабрати новог господара међу собом. Сада имамо два кластера са истим називом, један са 4 чвора и други са 2 чвора. Сваки од њих такође има главни чвор. То се назива проблемом раздвојеног мозга са ЕС кластерима. Да бисте то избегли, поставите ЕС параметар откривање.зен.минимум_мастер_нодес на половину броја чворова + 1.
  4. Пошто Еластицсеарцх јако користи уређаје за складиштење, надгледање И / О диска осигурава да се та основна потреба испуни. Постоји много разлога за смањени И / О диска, што се сматра кључном метриком за предвиђање многих врста проблема. Добра је метричка вредност за провјеру ефикасности индексирања и перформанси упита. Анализа операција читања и писања директно указује на то шта систему треба највише у одређеном случају употребе. Подешавања оперативног система за У / И диска су основа за све остале оптимизације, подешавање У / И диска може да избегне потенцијалне проблеме. Ако диск-И / О још увек није довољан, мере заштите попут оптимизације броја крхотина и њихове величине, спајања лептира, замене спорих дискова, преласка на ССД дискове или додавања више чворова треба проценити у складу са околностима које узрокују И / О уска грла.
  5. За апликације које се ослањају на претрагу, корисничко искуство је у великој корелацији са латенцијом тражења захтева. Много је ствари које могу утицати на перформансе упита, попут конструисаних упита, неправилно конфигурисаног кластера Еластицсеарцх, ЈВМ меморије и проблема сакупљања смећа, ИО диска и тако даље. Латенција упита је метрика која директно утиче на кориснике, зато обавезно додајте нека упозорења.
  6. Већина филтера у Еластицсеарцх-у подразумевано је спремљена у предмеморију. То значи да ће током првог извршења филтрираног упита Еластицсеарцх пронаћи документе који одговарају филтру и изградити структуру која се зове „битсет“ користећи те информације. Подаци похрањени у битсету садрже идентификатор документа и одговара ли неки документ филтру. Накнадно извршавање упита са истим филтром поново ће употребљавати информације похрањене у битсету, на тај начин убрзати извршење упита уштедом И / О операција и ЦПУ циклусима. Препоручује се употреба филтера у упиту. За више детаља погледајте овде.
  7. Време освежавања и време спајања уско су повезани са индексирањем перформанси, плус утичу на укупне перформансе кластера. Време освежавања повећава се са бројем операција датотека за луценски индекс (схард).
  8. Омогућивање спорог евидентирања упита помоћи ће вам у препознавању који су упити спори и шта се може учинити да их побољшате, посебно корисно за упите у замјенске знакове.
  9. Повећајте неограничену величину да бисте дозволили макс. Датотеке.
  10. Учинковитост ЕластицСеарцх-а може да пати када ОС одлучи да замени неискоришћену меморију апликације. Онемогућите замену постављањем подешавања нивоа ОС-а или подесите следеће у ЕластицСеарцх цонфиг боотстрап.млоцкалл: труе
  11. Онемогући брисање свих индекса упитом из замишљених знакова. Како би се осигурало да неко не изврши операцију ДЕЛЕТЕ за све индексе (* или _алл) поставите ацтион.деструцтиве_рекуирес_наме на труе.

Пре него што завршите, ево листе УРЛ-ова који су корисни за гледање метрика.

  • / _цлустер / здравје? прилично: За индикатор здравља кластера.
  • / _статус? љеп: За све информације о свим индексима.
  • / _нодес? претти: За све информације о чворовима.
  • / _цат / мастер? прилично: За главни чвор.
  • / _статс? претти: За расподјелу дијелова, статистика индекса.
  • / _нодес / статс? претти: За појединачну статистику чвора, то укључује јвм, хттп, ио статистику за чвор.

Скупљање метрика Еластицсеарцх-а подржано је од стране већине алата за надгледање система, као што су Датадог, ТИЦК. Употреба таквих алата препоручује се, а креирање лијевка препоручује се за континуирано надгледање Еластицсеарцх-а.

Закључак:

Еластицсеарцх је дистрибуирани механизам за претраживање и аналитику у целом тексту, који омогућава већем броју станара да претражују кроз читав низ података, без обзира на величину, невиђеном брзином. Поред могућности претраживања целокупног текста, ЕластицСеарцх представља систем аналитике и дистрибуиране базе података. ЕластицСеарцх има велике задане поставке за почетак. Али кад прођете почетну фазу експериментирања, морате потрошити неко време да подесите подешавања за своје потребе. Препоручује се да конфигуришете конфигурацију касније, заједно са званичном документацијом, како бисте осигурали да је ваш кластер конфигуриран тако да одговара вашим потребама.