Tento článek je výňatek z kapitoly 13 knihy Linux v akci, vydal Manning.
Byl výkon vašeho počítače se systémem Linux nepravidelný nebo neobvykle pomalý? Máte podezření, že rostoucí poptávka může převyšovat vaše dostupné zdroje? Zde je několik otázek, které byste si měli položit:
- Jak blízko jste vyčerpání zdrojů procesoru a paměti?
- Neběží něco zbytečně, co by se dalo vypnout?
- Existuje něco, co bez vašeho vědomí funguje jako nečestné?
Další zdroje pro Linux
- Cheat pro příkazy Linuxu
- Cheat sheet pro pokročilé příkazy systému Linux
- Bezplatný online kurz:Technický přehled RHEL
- Síťový cheat pro Linux
- Cheat sheet SELinux
- Cheat pro běžné příkazy pro Linux
- Co jsou kontejnery systému Linux?
- Naše nejnovější články o Linuxu
Kde byste měli hledat odpovědi? nahoře program je skvělým místem, kde začít. Může vám poskytnout bohatý, samoaktualizační přehled o procesech běžících ve vašem systému.
Obrázek níže ukazuje typickou obrazovku top
data. První řádek obsahuje aktuální čas, čas, který uplynul od posledního spuštění systému, počet aktuálně přihlášených uživatelů a průměry zatížení za poslední minutu, pět minut a 15 minut. Tyto informace lze také vrátit spuštěním uptime
.
Protože se snažíme vyřešit problémy s výkonem, sloupce dat, které by nás měly zajímat nejvíce, jsou %CPU
(procento kapacity CPU aktuálně využívané daným procesem) a %MEM
(procento kapacity paměti). Zvláště si budete chtít povšimnout procesů, které se zobrazují v horní části seznamu.
V tomto případě můžete vidět, že démon MySQL využívá 4,3 % CPU serveru a z dalšího sloupce 13 % jeho paměti. Pokud budete postupovat podle tohoto řádku vlevo, uvidíte, že ID procesu (PID) je 1367
a proces je "vlastněn" mysql
uživatel.
Možná dojdete k závěru, že tento proces si vyžádal více zdrojů, než lze ospravedlnit, a bude muset být obětován (pro větší dobro, rozumíte). To top
displej vám dal vše, co budete k jeho zabití potřebovat. Vzhledem k tomu, že MySQL je služba spravovaná systemd (na těch distribucích používajících systemd), vaší první volbou by mělo být použití systemctl
jemně zpomalit proces, aniž by byla ohrožena jakákoli data aplikace.
systemctl stop mysqld
Pokud proces, který chcete ukončit, nespravuje systemd nebo pokud se něco pokazilo a systemctl
se nepodařilo zastavit, pak můžete použít buď kill
nebo killall
k odstranění vašeho procesu. Některé systémy vyžadují instalaci killall
jako součást psmisc
balík. Předáte PID, abyste kill
tímto způsobem:
kill 1367
killall
, na druhé straně používá název procesu spíše než jeho ID.
killall mysqld
Zabít nebo zabít všechny, to je otázka . Ve skutečnosti je odpověď zřejmá. killall
vypne jeden proces, který je založen na PID, zatímco killall
zabije tolik instancí konkrétního programu, kolik běží. Pokud by tedy existovaly dvě nebo tři samostatné instance MySQL – možná patřící samostatným uživatelům – všechny by byly zastaveny. Před spuštěním killall
, ujistěte se, že neexistují žádné podobně pojmenované procesy, které chcete stále provozovat a které by se mohly stát "vedlejšími škodami."
Samozřejmě budete muset také spustit systemctl disable
abyste se ujistili, že se proces při příštím spuštění nerestartuje.
systemctl disable mysqld
Dešifrování nahoře
Pro případ, že byste je někdy potřebovali, třetí řádek top
výstup, který jste viděli o něco dříve, nám poskytuje časové hodnoty (v procentech) pro řadu dalších metrik CPU. Zde je stručný přehled změti zkratek, které tam uvidíte:
Metrika | Význam |
---|---|
us | Čas běžící procesy s vysokou prioritou (bez niceho) |
sy | Proces běžícího jádra |
ni | Čas běžící procesy s nízkou prioritou (pěkné) |
id | Čas strávený naprázdno |
wa | Čas čekání na dokončení I/O událostí |
hi | Čas strávený správou hardwarových přerušení |
si | Čas strávený správou softwarových přerušení |
st | Čas ukradený tomuto virtuálnímu počítači jeho hypervizorem (hostitelem) |
top
zobrazení lze přizpůsobit v reálném čase pomocí vstupu z klávesnice. Zadejte h
se dozvíte více.
Dělání problémů (simulování zátěže CPU)
Touha vidět top
v akci, ale nevěděli byste, že všechno běží hladce?
Proč nesimulovat přetížení CPU na krizové úrovni? Podobně jako děti yes
bude vydávat (digitální) šum nepřetržitě, dokud nebude vyzváno k zastavení. Na druhou stranu to není vůbec jako děti.
Tento příkaz přesměruje tento šum na jednorázový /dev/null
soubor a &
postava posune proces do pozadí a vrátí vám kontrolu nad příkazovým řádkem. Chcete-li zvýšit tlak, spusťte příkaz ještě několikrát.
$ yes > /dev/null &
To by je mělo zaměstnat. Zatímco vše běží, sledujte top
vidět, co se děje. Můžete také zkusit spustit jiné aplikace, abyste viděli, jak moc bude trvat, než je zpomalí. Až budete hotovi, spusťte killall
odškrtnout všechna vaše yes
relace na jeden zátah.
$ killall yes