Logstash [Od nuly do nuly] [L13] Ladenie výkonu

Logstash Performance Tuning



obsah

1. Ladenie výkonu (ladenie výkonu)



1.1. Sprievodca riešením problémov s výkonom



1.1.1. Kontrolný zoznam výkonnosti



1.2. Upravte a analyzujte výkonnosť Logstash (ladenie a profilovanie výkonu Logstash)

1.2.1. Opis konfigurácie a výkonu potrubia

1.2.2. Analytický reaktor




Táto časť obsahuje nasledujúce informácie o vyladení výkonu Logstash:

  • Sprievodca riešením problémov s výkonom
  • Upravte a analyzujte výkonnosť Logstash

1.1. Sprievodca riešením problémov s výkonom

Túto príručku na riešenie problémov môžete použiť na rýchlu diagnostiku a riešenie problémov s výkonom Logstash. Tejto príručke sa dá porozumieť bez pokročilých interných znalostí o potrubí. Ak však chcete ísť nad rámec tohto sprievodcu, odporúča sa prečítať si ho dokumentácia plynovodu

Pri prvom pokuse o zlepšenie výkonu budete možno chcieť skočiť z budovy a zmeniť nastavenia, ako napríklad pipe.workers (-w). Podľa našich skúseností zmena tohto nastavenia sťaží riešenie problémov s výkonom, pretože zvýšite počet použitých premenných. Namiesto toho vykonajte zmeny po jednom a zmerajte výsledky. Spoľahlivým spôsobom, ako určiť situáciu, je koniec tohto zoznamu.

1.1.1. Kontrolný zoznam výkonnosti

  1. Skontrolujte výkonnosť vstupného zdroja a výstupného cieľa:
    1. Logstash je iba taký rýchly ako služba, ku ktorej je pripojený. Logstash môže spotrebovávať a generovať údaje iba rýchlosťou svojich vstupných a výstupných cieľov!
  2. Zobraziť štatistiku systému:
    1. CPU
      1. Vezmite prosím na vedomie, či je CPU veľmi vyťažený. V systéme Linux / Unix môžete spustiť top -H na zobrazenie štatistík procesov podľa vlákien a celkových štatistík CPU.
      2. Ak je využitie procesora vysoké, preskočte na časť o kontrole haldy JVM a potom si prečítajte časť o úprave nastavení pracovníka Logstash.
    2. Pamäť
      1. Upozorňujeme, že program Logstash beží na prostredí Java VM. To znamená, že Logstash vždy použije maximálne množstvo pamäte, ktoré ste mu pridelili.
      2. Vyhľadajte ďalšie aplikácie, ktoré využívajú veľa pamäte a môžu spôsobiť, že sa program Logstash prepne na disk. To sa stane, ak celková pamäť použitá aplikáciou prekročí fyzickú pamäť.
    3. Využitie I / O
      1. Monitorujte I / O disku a skontrolujte, či je disk nasýtený.
        1. Ak doplnok Logstash, ktorý používate (napríklad výstup súboru), môže nasýtiť úložný priestor, môže spôsobiť nasýtenie disku.
        2. Ak narazíte na veľa chýb, ktoré nútia program Logstash generovať veľké množstvo protokolov chýb, môže sa vyskytnúť aj nasýtenie disku.
        3. V systéme Linux môžete na sledovanie I / O disku použiť iostat, dstat alebo podobné nástroje.
      2. Monitorujte sýtosť siete v / v.
        1. Ak používate vstup / výstup, ktorý vykonáva veľa sieťových operácií, môže dôjsť k nasýteniu siete.
        2. V systéme Linux môžete na sledovanie siete používať nástroje ako dstat alebo iftop.
    4. Skontrolujte haldu JVM:
      1. Ak je veľkosť haldy príliš nízka, miera využitia procesora sa zvyčajne rýchlo zvýši, čo bude mať za následok nepretržitý zber odpadu zo strany JVM.
      2. Rýchly spôsob, ako skontrolovať tento problém, je zdvojnásobiť veľkosť haldy a zistiť, či sa výkon zlepšil. Nezvyšujte veľkosť haldy nad rámec fyzickej pamäte. Ponechajte aspoň 1 GB voľného miesta pre operačný systém a ďalšie procesy.
      3. Môžete použiť obslužný program príkazového riadku jmap distribuovaný s programom Java alebo použiť VisualVM na presnejšie meranie haldy JVM. Viac informácií nájdete na Profilovanie haldy
      4. Vždy sa uistite, že minimálna (Xms) a maximálna (Xmx) veľkosť haldy sú nastavené na rovnakú hodnotu, aby sa zabránilo úprave veľkosti haldy za behu, čo je veľmi nákladný proces.
    5. Upravte nastavenia pracovného programu Logstash:
      1. Najskôr použite príznak -w na rozšírenie počtu pracovníkov potrubia. Tým sa zvýši počet vlákien dostupných pre filtre a výstup. V prípade potreby ho možno bezpečne rozšíriť na viac jadier procesora, pretože vlákna môžu byť na I / O nečinné.
      2. Môžete tiež upraviť veľkosť výstupnej dávky. Pre mnoho výstupov, napríklad pre výstup Elasticsearch, bude toto nastavenie zodpovedať veľkosti operácie I / O. Pre výstup Elasticsearch toto nastavenie zodpovedá veľkosti dávky.

1.2. Upravte a analyzujte výkonnosť Logstash (ladenie a profilovanie výkonu Logstash)

Výber predvolenej hodnoty aplikácie Logstash môže poskytnúť rýchly a bezpečný výkon pre väčšinu používateľov. Ak sa však nájdu problémy s výkonom, bude možno potrebné upraviť niektoré predvolené nastavenia. Logstash poskytuje nasledujúce konfigurovateľné možnosti na úpravu výkonu potrubia: pipeline.workers, pipeline.batch.size a pipeline.batch.delay. Ďalšie informácie o nastavení týchto možností nájdete v časti logstash.yml

Pred úpravou týchto možností si prečítajte Sprievodcu riešením problémov s výkonom ( Sprievodca riešením problémov s výkonom )。

  • Nastavenie pipeline.workers určuje, koľko vlákien sa má spustiť na filtrovanie a výstupné spracovanie. Ak zistíte, že sa udalosť zálohuje alebo CPU nie je nasýtený, zvážte zvýšenie hodnoty tohto parametra, aby ste lepšie využili dostupný výkon spracovania. Môžete dokonca nájsť dobré výsledky, vďaka ktorým toto číslo prekročí počet dostupných procesorov, pretože tieto vlákna môžu pri zápise do externého systému stráviť veľa času v stave čakania I / O. Legálna hodnota tohto parametra je kladné celé číslo.
  • Nastavenie pipeline.batch.size definuje maximálny počet udalostí, ktoré zhromaždí jedno pracovné vlákno pred pokusom o vykonanie filtrov a výstup. Väčšie veľkosti dávky sú zvyčajne efektívnejšie, ale zvyšujú réžiu pamäte. Niektoré hardvérové ​​konfigurácie vyžadujú, aby ste zvýšili priestor haldy JVM v konfiguračnom súbore jvm.options, aby ste predišli zníženiu výkonu. (Viac informácií nájdete na Konfiguračné súbory protokolu Logstash ) Z dôvodu častého zberu odpadu alebo zlyhania JVM v súvislosti s výnimkami z nedostatku pamäte spôsobia hodnoty mimo optimálneho rozsahu zníženie výkonu. Výstupný doplnok dokáže každú dávku spracovať ako logickú jednotku. Napríklad výstup Elasticsearch vydáva požiadavky na dávky pre každú prijatú dávku ( hromadné žiadosti )). Upravte nastavenie pipeline.batch.size, aby ste upravili veľkosť dávkových požiadaviek odoslaných do Elasticsearch.
  • Nastavenie pipeline.batch.delay je potrebné zriedka upravovať. Toto nastavenie upravuje oneskorenie potrubia Logstash. Dávkové oneskorenie kanálu je maximálny čas (v milisekundách), ktorý Logstash čaká na nové správy po prijatí udalostí v aktuálnom pracovnom vlákne kanálu. Po uplynutí tejto doby začne Logstash vykonávať filter a výstup. Maximálny čas, ktorý Logstash čaká medzi prijatím udalosti a spracovaním udalosti vo filtri, je produktom pipeline.batch.delay a pipeline.batch.size.

1.2.1. Opis konfigurácie a výkonu potrubia

Ak plánujete upraviť predvolené nastavenia kanálu, zvážte nasledujúce návrhy:

  • Celkový počet prebiehajúcich udalostí je určený súčinom pipeline.workers a pipeline.batch.size. Tento produkt sa nazýva počítanie na palube. Pri úprave nastavení pipeline.workers a pipeline.batch.size pamätajte na hodnoty za letu. Rúry, ktoré prerušovane prijímajú veľké udalosti v nepravidelných intervaloch, vyžadujú dostatok pamäte na zvládnutie týchto špičiek. Nastavte zodpovedajúcim spôsobom priestor haldy JVM v konfiguračnom súbore jvm.options. (Viac informácií nájdete na Konfiguračné súbory protokolu Logstash 。)
  • Zmerajte každú zmenu, aby ste zabezpečili, že sa výkon skôr nezlepší, ako zníži.
  • Uistite sa, že máte dostatok pamäte na to, aby ste zvládli náhle zvýšenie veľkosti udalosti. Napríklad aplikácia, ktorá generuje výnimku, je reprezentovaná ako veľký blok textu.
  • Počet pracovných programov je možné nastaviť vyšší ako počet jadier CPU, pretože výstup často trávi nečinný čas v podmienkach čakania I / O.
  • Vlákna v Jave majú názvy a pomocou grafických nástrojov jstack, top a VisualVM môžete určiť, ktoré prostriedky dané vlákno používa.
  • Na platforme Linux používa Logstash popisné veci na označenie všetkých vlákien, ktoré môže používať. Napríklad vstup sa zobrazí ako [základný] pracovníkN, kde N je celé číslo. Ak je to možné, označte ďalšie vlákna, ktoré vám pomôžu určiť ich účel.

1.2.2. Analytický reaktor

Pri úprave Logstash bude pravdepodobne potrebné upraviť veľkosť haldy. môžete to použiť VisualVM Nástroje na analýzu haldy. Tabla Monitor je obzvlášť užitočná na kontrolu toho, či je alokácia haldy dostatočná pre aktuálne pracovné zaťaženie. Screenshot nižšie zobrazuje príklad Monitor Pane. Prvá tabla skúma inštancie Logstash nakonfigurované s príliš veľkým počtom udalostí na palube. Druhá tabla skúma inštancie Logstash nakonfigurované s príslušným počtom letových udalostí. Upozorňujeme, že tu použitá konkrétna veľkosť dávky sa s najväčšou pravdepodobnosťou nebude vzťahovať na vaše konkrétne pracovné zaťaženie, pretože pamäťové požiadavky Logstashu do veľkej miery závisia od typu správy, ktorú odosielate.

V prvom príklade sme videli, že využitie procesora nie je efektívne. V skutočnosti musí JVM často zastaviť VM kvôli „úplnej GC“. Úplné odstránenie odpadu je častým príznakom nadmerného tlaku v pamäti. Toto je viditeľné v hrotovom režime na grafe procesora. V príklade vyššej efektívnosti konfigurácie je grafický režim GC plynulejší a využitie procesora rovnomernejšie. Môžete tiež vidieť, že medzi pridelenou veľkosťou haldy a maximálnou povolenou haldou je dostatočná rezerva, ktorá poskytuje veľký pracovný priestor pre JVM GC.

Použitie a vynikajúce VisualGC Nástroj podobný doplnku kontroluje podrobné štatistiky GC a ukazuje, že nadmerne pridelené virtuálne počítače trávia veľmi málo času v efektívnom Eden GC v porovnaní s časom stráveným v zdrojovo náročnom „úplnom“ GC. A

Pokiaľ je režim GC prijateľný, je prípustné aj občasné zväčšenie na maximálnu veľkosť haldy. Takéto vrcholy veľkosti haldy sa vyskytujú v reakcii na veľký počet udalostí v potrubí. Spravidla sa zachováva určitá medzera medzi veľkosťou použitej haldy pamäte a maximálnou hodnotou. Tento dokument nie je komplexným sprievodcom ladením JVM GC. Čítať úradne Sprievodca Oracle Viac informácií o tejto téme. Odporúčame tiež prečítať ' Ladenie výkonu Java ”。