GNU/Linux >> Znalost Linux >  >> Linux

Odstraňování problémů s pomalými servery:Jak zkontrolovat CPU, RAM a disk I/O

Pokud jste dělali práci správce systému dostatečně dlouho, viděli jste obávané incidenty „Server je pomalý“. Dlouhou dobu by mi z těchto typů incidentů hrozila díra v žaludku. Jak sakra řešíte něco tak subjektivního? "Zpomalení" běžného uživatele může být způsobeno jinými procesy (naplánovanými nebo ne), které běží a spotřebovávají více zdrojů než obvykle, nebo může být se serverem něco v nepořádku.

Když jsem poprvé začal pracovat jako systémový správce, okamžitě bych odpověděl:"Potřebuji o tom více informací." Uživatel obvykle není schopen poskytnout žádné další informace, protože neví, co běží v zákulisí nebo jak vysvětlit, co vidí, jinak než „je to jen pomalé“. V dnešní době, než uživateli vůbec odpovím, zkontroluji pár věcí.

Počáteční přihlášení

Je toho hodně, co můžete zjistit po přihlášení k hostiteli. Můžete se vůbec přihlásit? Je přihlášení pomalé nebo visí? ssh příkaz má tři úrovně ladění, z nichž každá vám poskytne nepřeberné množství informací ještě předtím, než budete v systému. Chcete-li povolit ladění, stačí přidat další v na -v volba. Například ladění třetí úrovně, které používám výhradně já, by bylo:

[~]$ ssh -vvv hostname.domain.com

Velká 3 (také znám jako CPU, RAM a disk I/O)

Nyní se podívejme na tři největší příčiny zpomalení serveru:CPU, RAM a diskové I/O. Využití CPU může způsobit celkovou pomalost hostitele a potíže s včasným dokončením úkolů. Některé nástroje, které používám při pohledu na CPU, jsou top asar .

Kontrola využití procesoru nahoře

top nástroj vám poskytuje pohled v reálném čase na to, co se děje na serveru. Ve výchozím nastavení, když je top spustí, zobrazí aktivitu pro všechny CPU:

Toto zobrazení lze změnit stisknutím číselné klávesy 1, která přidá další podrobnosti týkající se hodnot využití pro každý CPU:

Některé věci, které byste v tomto zobrazení měli hledat, je průměrná zátěž (zobrazená na pravé straně horního řádku) a hodnota následujících pro každý CPU:

  • us :Toto procento představuje množství CPU spotřebované uživatelskými procesy.
  • sy :Toto procento představuje množství CPU spotřebované systémovými procesy.
  • id :Toto procento představuje nečinnost jednotlivých CPU.

Každá z těchto tří hodnot vám může poskytnout poměrně dobrou představu v reálném čase o tom, zda jsou CPU vázány uživatelskými nebo systémovými procesy.

Skutečné vysvětlení průměrné zátěže by vyžadovalo samostatný článek. Pro účely tohoto článku budu mluvit obecně. Tři průměrné hodnoty zatížení zleva doprava představují jednominutové, pětiminutové a 15minutové průměry. Znovu říkám velmi obecně, pokud vidíte, že průměr za jednu minutu překračuje počet fyzických CPU, které máte, pak je systém s největší pravděpodobností vázán na CPU.

Poznámka: Další informace o průměrné zátěži a o tom, proč si někteří lidé myslí, že je to hloupé číslo, najdete v hloubkovém výzkumu Brendana Gregga.

Kontrola všech „velkých 3“ pomocí sar

U historických údajů o výkonu CPU se spoléhám na sar příkaz, který poskytuje sysstat balík. Na většině serverových verzí Linuxu sysstat je standardně nainstalován, ale pokud není, můžete jej přidat pomocí správce balíčků vašeho distribuce. sar obslužný program shromažďuje systémová data každých 10 minut prostřednictvím úlohy cron umístěné v /etc/cron.d/sysstat (CentOS 7.6). Zde je návod, jak zkontrolovat všechny „velké 3“ pomocí sar .

Poznámka: Pokud jste právě nainstalovali sar Chcete-li pokračovat podle tohoto článku, dejte příkazu nejprve nějaký čas na zaznamenání dat.

Příkaz sar -u poskytuje informace o všech CPU v systému, počínaje půlnocí:

Stejně jako u top , hlavní věci ke kontrole jsou %user , %system , %iowait a %idle . Tyto informace vám mohou říci, jak daleko do minulosti měl server problémy.

Celkově sar příkaz může poskytnout mnoho informací. Protože tento článek vysvětluje pouze rychlou kontrolu toho, co se děje na serveru, podívejte se na man sar abychom tyto informace rozebrali ještě dále.

Ke kontrole výkonu RAM používám sar -r , které vám poskytují denní využití paměti:

Hlavní věc, kterou je třeba hledat při využití RAM, je %memused a %commit . Krátké slovo o %commit pole:Toto pole může ukazovat více než 100 %, protože linuxové jádro běžně přetěžuje RAM. Pokud %commit je trvale nad 100 %, tento výsledek by mohl být indikátorem toho, že systém potřebuje více paměti RAM.

Pro výkon disku I/O používám sar -d , který vám poskytuje výstup I/O disku pouze pomocí názvu zařízení. Chcete-li získat název zařízení, použijte sar -dP :

Pro tento výstup se podívejte na %util a %await vám poskytne dobrý celkový obraz o diskových I/O v systému. %util pole je docela samovysvětlující:Jde o využití tohoto zařízení. await pole obsahuje množství času, který I/O stráví v plánovači. Čekání se měří v milisekundách a v mém prostředí jsem viděl, že cokoli delší než 50 ms začíná způsobovat problémy. Tento práh se může ve vašem prostředí lišit.

Pokud některý z těchto příkazů ukazuje problém, můžete se vrátit a zjistit, kdy začaly problémy se serverem, pomocí sar {-u, -r, -d, -dP} -f /var/log/sa/sa<XX> (kde XX je den v měsíci, který chcete vyhledat).

V tuto chvíli mám obvykle dobrou představu o tom, co se aktuálně děje na serveru a co se děje za posledních zhruba 48 hodin. Odpovím uživateli informovanějšími odpověďmi. Například:„Za posledních 24 hodin nevidím žádné známky zpomalení hostitele. Zkuste prosím použít nový profil putty pro ssh a dejte mi vědět, pokud budete mít i nadále problémy."

Další příklad:„Nevidím nic, co by v současné době na tomto hostiteli způsobovalo problémy, ale zaznamenal jsem vyšší zatížení CPU $time . Tehdy jsi viděl problémy? Pokud ano, zkuste to prosím nyní a dejte mi vědět, pokud problémy přetrvávají."

Dostanete nápad. Mít informace poskytnuté pohledem na počáteční přihlášení a následným spuštěním několika sar Příkazy, jejichž spuštění mi obvykle zabere méně než 10 minut, dělá hodně pro to, abych odvrátil další otázky a rychleji dosáhl řešení.


Linux
  1. Jak zkontrolovat, zda na celém pevném disku nejsou chyby a špatné sektory?

  2. Jak zkontrolovat celkovou velikost RAM a využití paměti v Linuxu

  3. Jak zkontrolovat místo na disku v Ubuntu 20.04 a 20.10?

  1. Linux – Jak monitorovat diskový vstup/výstup v konkrétním adresáři?

  2. Jak zkontrolovat využití disku pomocí adresáře a využití šířky pásma?

  3. Jak zkontrolovat využití I/O disku na proces?

  1. Jak zkontrolovat verzi OS a Linuxu

  2. Jak vyčistit diskové I/O mezipaměti v Linuxu?

  3. Linux OOM disk I/O. Také:swap, k čemu je to dobré?