Tutoriel Linux

Htop pod Linuxem: čtení zátěže serveru bez paniky kvůli barvám

Débutant7 min de lecture
À retenirLinux n'est pas réservé aux experts. Le bon point de départ : une distribution accessible, une sauvegarde propre et quelques commandes comprises.

Když se server zpomalí, htop Rychle to budí dojem, že vysvětluje všechno. Ukazatele procesoru, paměť, barvy, seznam procesů pohybujících se všemi směry… a někdy i poněkud nebezpečnou touhu: ukončit první proces, který se zdá spotřebovávat příliš mnoho energie.

Jako výchozí bod doporučuji přečíst si htop. Pomáhá identifikovat potenciální problémy, ale není spolehlivým zdrojem závěrů. V tomto článku se podíváme na to, co je třeba zkontrolovat jako první: využití CPU, využití paměti, průměrné zatížení, řazení procesů a především kontroly, které je třeba provést před vypnutím produkční služby.

Tux analyzuje zátěž linuxového serveru pomocí abstraktní monitorovací tabulky
Htop pomáhá odhalit potenciální zákazníky, ale před zastavením procesu by se měly zkontrolovat protokoly a služby.

Instalace a spuštění htopu v Linuxu

Na mnoha distribucích není htop standardně nainstalován. V Debianu nebo Ubuntu jej můžete přidat pomocí APT:

Aktualizace příkazu sudo apt
sudo apt install htop

Na Fedoře:

sudo dnf install htop

Na Arch Linuxu:

sudo pacman -S htop

Pak už jen stačí spustit:

htop

Pokud jste připojeni ke vzdálenému serveru přes SSH, otevřete htop v čisté relaci. Vyhněte se provádění destruktivních akcí z nestabilní relace nebo z terminálu, který byste mohli omylem zavřít.

Čtěte ukazatele CPU bez paniky

V horní části obrazovky htop zobrazuje ukazatel pro každé jádro nebo vlákno procesoru. To je užitečné pro zjištění, zda je zátěž rovnoměrně rozdělena, nebo zda jedno jádro pracuje na plný výkon.

Krátkodobý nárůst zátěže CPU nemusí být nutně problém. Zálohy, kompilace, antivirové kontroly nebo komprese mohou na několik sekund zaznamenat nárůst zátěže. Nejvíc mě zajímá délka tohoto nárůstu a proces, který s ním souvisí.

Než se čehokoli dotknete, zkontrolujte také počet dostupných logických procesorů:

nproc

Průměrné zatížení 4 na stroji s 8 vlákny nemá stejný význam jako na malém VPS s 1 vCPU. Je to jednoduché rozlišení, ale zabraňuje mnoha špatným rozhodnutím.

doba provozuschopnosti

Rozkaz doba provozuschopnosti zobrazuje tři průměrné hodnoty zatížení za 1, 5 a 15 minut. Pokud všechny tři hodnoty nějakou dobu rostou, máte silnější signál než jednoduchý skok pozorovaný v htop.

Pokud se chcete tomuto bodu ponořit hlouběji, článek o průměrná zátěž pod Linuxem Tato četba to dobře doplňuje.

Využití paměti: nezaměňujte mezipaměť se saturací

Využití paměti je často zdrojem obav. V Linuxu lze významnou část paměti RAM využít jako mezipaměť disku. To nemusí být nutně špatná věc. Jádro tuto mezipaměť uvolní, když ji aplikace potřebují.

Pro kontrolu mimo htop spusťte:

volný -h

Podívejte se zejména na sloupek k dispoziciPokud je vše v pořádku, paměť nemusí být vaším hlavním problémem, i když horní lišta vypadá velmi plná.

Pokud se však dostupná paměť sníží, zvětší se odkládací prostor a server se zpomalí, je třeba identifikovat proces nadýmání. V htopu můžete třídit podle paměti pomocí F6poté vyberte sloupec MEM %.

ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | hlava

Tento příkaz umožňuje rychlé čtení mimo interaktivní rozhraní. Může být užitečný při řešení problémů, pokud není nainstalován htop nebo pokud chcete výstup zkopírovat do tiketu.

Procházení procesů k nalezení skutečného viníka

V htop se v dolním seznamu zobrazují procesy. Nejužitečnější sloupce zpočátku jsou PID, UŽIVATEL, CPU %, MEM %, ČAS+ A Příkaz.

Několik věcí, které je třeba vědět:

  • F6 vybrat sloupec řazení;
  • F4 filtrovat seznam;
  • F5 zobrazit strom procesů;
  • F9 poslat signál procesu;
  • q pro čisté ukončení htopu.

Stromové zobrazení je velmi užitečné. Umožňuje vám zjistit, zda je proces náročný na zdroje spuštěn službou, skriptem, uživatelem SSH nebo podřízeným objektem webového serveru.

Pokud vidíte, že proces Java, PHP, Python nebo Node spotřebovává mnoho zdrojů, neukončujte ho náhodně. Nejprve zkontrolujte, ke které službě patří:

stav systemctl nginx --no-pager
stav systemctl php8.4-fpm --no-pager
stav systemctl mariadb --no-pager

Názvy služeb samozřejmě přizpůsobte svému serveru. Pokud nevíte, které služby běží, podívejte se na článek o Příkazy systemctl pro výpis linuxových služeb je vhodnější, než budeme pokračovat.

Před ukončením procesu zkontrolujte protokoly.

Nejlákavější tlačítko v htopu je F9Používá se k odeslání signálu procesu. Technicky vzato můžete PID ukončit z htop. V reálném světě je to často poslední věc, kterou uděláte, ne první.

Před vypnutím služby zkontrolujte její poslední protokoly:

sudo journalctl -u nginx -n 80 --no-pager

Pokud služba zapisuje do vyhrazeného souboru, sledujte ji několik sekund:

sudo tail -f /var/log/nginx/error.log

Tuto část si také můžete znovu přečíst článek o monitorování ocasu a živého záznamuZabraňuje tomu, abyste se zasekli před htop bez kontextu.

Pokud proces patří ke službě systemd, je vhodnější provést čistý restart:

sudo systemctl restart nginx
sudo systemctl status nginx --no-pager

Pokud opravdu potřebujete poslat signál do PID regulátoru, začněte tím, že OBDOBÍ. Nechat ZABÍT pro případy, kdy proces úplně přestane reagovat.

sudo kill -TERM 1234
sudo kill -KILL 1234

Nahradit jedna tisíc dvě stě třicet čtyři podle skutečného PID. A pokud jste v databázi, úložišti, produkčním serveru nebo aktivní klientské relaci, věnujte před jakýmkoli stisknutím tlačítka dalších třicet sekund. Právě tam se často vyhnete skutečnému selhání.

Když htop nestačí

Htop zobrazuje procesy velmi dobře, ale nevypovídá o celém příběhu. Vysoké zatížení může pocházet z CPU, paměti, diskových I/O operací, sítě, blokované služby nebo běžného nárůstu zatížení aplikací.

Abychom udělali krok zpět:

vmstat 1 5
systemctl --selhalo
journalctl -p varování..alert -b --no-pager

vmstat poskytuje rychlý přehled o dobách čekání CPU, paměti, swapu a I/O operací. systemctl --selhalo vypíše vadné jednotky. journalctl umožňuje identifikovat varování z aktuálního spuštění.

Pokud se problém týká síťových portů nebo služby, která již nenaslouchá, zkontrolujte také, co je skutečně otevřeno pomocí ss nebo netstat v Linuxu.

Moje rychlá metoda pro řešení pomalého serveru

Když otevřu htop na pomalém serveru, ponechám si tuto sekvenci:

  • podívejte se na průměrné zatížení doba provozuschopnosti a porovnejte to s počtem vláken CPU;
  • zkontrolujte dostupnou paměť pomocí volný -h ;
  • seřadit htop podle CPU a poté podle paměti;
  • identifikovat oddělení nebo uživatele stojící za procesem;
  • před restartem nebo ukončením čehokoli si přečtěte protokoly;
  • Pokud proces závisí na službě, proveďte čistý restart pomocí systemctl.

Htop je skvělý pro zobrazení aktuálního stavu. Správné rozhodnutí ale málokdy pochází z jediné barvy nebo sloupce. Vezměte si PID, službu, protokoly a teprve poté zvolte akci.

Referenční dokumentaci naleznete na oficiálních webových stránkách htop, její Repozitář GitHubua manuálovou stránku nahoře pro související koncepty týkající se zátěže a procesů.

sudo apt update && sudo apt upgrade