Portál AbcLinuxu, 10. května 2025 17:02
Řešení dotazu:
Já nejčastěji monitoruju, kdy je admin (tj. já) šíleně ožralý. To zatím způsobilo nejvíc problematických situací.
Stav, kdy sleduju nějaký ukazatel (protože si pamatuju, jaké jsou běžné a patologické hodnoty) na divném stroji a potom něco udělám, není podle mě dobrý.Pokud to je jediný ukazatel, který sleduju, tak to určitě dobré není. Pokud to je jako doplněk ke sledování toho podstatného, tak je celkem vysoká šance, že to upozorní na problémy, které explicitně nesleduji. Samozřejmě to neřekne, co přesně se děje, ale řekne to, že něco není úplně v pořádku a že bych se měl podívat důkladněji. Také už jsem se párkrát setkal s tím, kdy nějaké nepodstatné sledované ukazatele pomohly s lokalizací nejasných problémů a úzkých hrdel. Osobně doporučuji mít dvě skupiny ukazatelů. Ty podstatné, které hlídají poskytované služby (odezvy démonů, health check) a celkový stav serveru (obsazená paměť, místo na disku, load). A pak ty nepodstatné, které se občas hodí a je levné je sbírat (IO operace, teploty, …).
Kdyby to byly služby, tak je to ok, ale jsou to jen win aplikace, které nedokážou běžet jako služby.No comment
Ale to je přeci jasné, že musím vědět, jaké hodnoty jsou běžné a jaké patologické. Kdybych sledoval jen služby (jejich odezvy apod.), tak nepoznám, že se nějaký problém pomalu blíží a až se začnou zpomalovat odezvy monitorované aplikace, tak se dá říci, že už je pozdě.Znalost systému a potřeb běžících služeb je klíčová, o tom nediskutuju. O tom, že člověk po určité době (obzvláště, když ten systém sám stavěl) pozná, že je něco špatně i z reakce terminálu po přihlášení se na ssh, taky nediskutuju. Takto jsem detekoval několik problémů ale po jejich odhalení je nutné monitorovat přímo ty zdroje, co to způsobily. A nespoléhat se na příznaky.
Možná se ale bavíme v jiných rovinách. Já třeba musím monitorovat i věci, u kterých je běžné, že jsou v náhodných dobách off (a je to ok), chci vědět, kdy docházelo k malým výpadkům, ale chci být informován jen o těch větších atd.No spíš máme jiný přístup k věci. Já bych nebyl ochoten dělat polovinu věcí, o kterých ty píšeš a pokud už bych je dělal (což se občas stane), tak o tom určitě nebudu psát. Já si chci spravované služby vybírat a vybírám si ty, které jsou dostatečně příčetné.
Já si chci spravované služby vybírat a vybírám si ty, které jsou dostatečně příčetné.V tom je ten rozdíl. Já si vybírat nemohu, resp. jen omezeně.
trebas roste prave load, obsazenost ram, IO,Pozor, já jsem explicitně uvedl právě ten load a důvody jsem napsal. Schválně si pusť odkazovanou přednášku, tam je to vysvětleno ještě z jiného úhlu pohledu. (Je teda fakt, že on pro přesné řízení zdrojů a pro PID opravdu potřebuje mít čistou veličinu, protože jakákoliv přepočtová funkce mu z toho PID udělá něco zcela jiného.) Obsazenost ram a io zátěž jsou jistě správné veličiny k monitorování. K tomu loadu, s absurdně vysokými hodnotami loadu (stovky) se setkávám, pokud procesy čekají na IO. Jsou ve stavu D, čekají třeba na již neexistující NFS server a nic nedělají. Load stoupá (protože load je zprůměrovaná délka fronty čekajících procesů), počet procesů stoupá, ale jinak se nic neděje. Zajímavé je, že většina monitovacích software má / měla default check pro zombie (já jsem fakt za 15 let praxe neviděl, že by kernel nestíhat zabíjet zombíky) ale nikde jsem se nesetkal s checkem pro D (uninterruptible sleep). Takže správný postup je monitorovat ten NFS mount, druhá správná možnost je monitorovat procesy ve všech patologických stavech (monitoruje se pouze Z). Ne, místo toho se měří load.
tak při jakékoli změně musím dbát změny i na monitoring serveruNo to by mělo být součástí práce. Stejně jako dokumentace. Práce není hotová, dokud nejsou testy a není to zdokumentováno. (Opět je to moje vidění, které nikomu necpu.)
tobě se load nelíbíTo není o líbí / nelíbí. Taky jsem se v minulosti spálil monitorováním nesprávných metrik (které byly sledované nikoliv proto, že to daná situace vyžadovala, ale proto, "že se to tak dělá").
Ty bereš load jako něco všemocnéhoSeš si jistej, že reaguješ na správný komentář? Od počátku píšu load nebrat a ty mě na to napíšeš, že to beru jako něco všemocného
Prostě, přijde mi, že load zatracuješ, protože máš od něj přehnaná očekáváníNe, já vím přesně, co je load. Časem zprůměrovaná délka fronty procesů s nějakým exponenciálním úbytkem. Nic víc od něj neočekávám. A toto stanovisko je u mě roky stejné. A ty roky potkávám právě lidi, kteří load považují za bůh ví co. Když jsem nedávno dělal graf renderingu v 80 threadech, měl jsem load 80. Když se mi někde sekne NFS, je load klidně 500. Jen protože procesy čekají ve frontě. V prvním případě jsou to cpu bound procesy, ale vše ostatní funguje (když se tomu rendereru dá nízká priorita) v nezměněném tempu. U těch procesů zaseknutých v D je už potom vliv zcela nulový (ok, dobře, žerou paměť). Tj load 30 znamená jen tolik, že průměrně za 1 / 5 / 15 minut bylo ve stavu runnable 30 procesů. No to jsem se toho dozvěděl. Navíc ta hodnota není nezávislá. Load 30 na 4jádru může přestavovat problém, load 30 na 64jádru je flákárna.
[root@server ~]# top | grep zombie Tasks: 168 total, 1 running, 163 sleeping, 0 stopped, 4 zombie [root@server ~]# ps aux | awk '$8~/Z/ {print}' pentaho 22169 0.0 0.0 0 0 ? Z Jul24 0:00 [sh] defunct pentaho 24656 0.0 0.0 0 0 ? Z Jul27 0:00 [sh] defunct pentaho 29982 0.0 0.0 0 0 ? Z Jul27 0:00 [sh] defunct pentaho 30895 0.0 0.0 0 0 ? Z Jul27 0:00 [sh] defunct
int
, který vrací main()
). Po ukončení procesu se uvolní všechny zdroje, které měl proces alokované a zůstane jen zombík, tedy záznam v tabulce procesů, který obsahuje ten návratový kód.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.