Stebėkite available, o ne free
Linux naudoja kitaip nenaudojamą atmintį kaip disko podėlį, todėl mažas laisvos atminties kiekis tinkamai veikiančiame serveryje yra normalu. Stulpelis available yra branduolio įvertis, kiek atminties gali gauti naujos užduotys nenaudojant swap. Būtent šį skaičių reikia stebėti. Tikslus used skaičiavimas priklauso nuo įrankio versijos, todėl nelyginkite jo skirtingose sistemose.
free -h
grep -E 'MemAvailable|Shmem:|SReclaimable' /proc/meminfoKą iš podėlio galima atlaisvinti, o ko ne
Puslapių podėlį paprastai galima atlaisvinti, kai programoms prireikia atminties. Bendroji atmintis ir tmpfs (Shmem) taip pat įtraukiami į podėlį, tačiau jų negalima tiesiog pašalinti, nes juose laikomi duomenys, kurių kopijos diske nėra. Todėl didelis podėlis ir mažas available atminties kiekis dažnai reiškia didelį tmpfs arba bendrosios atminties segmentą.
df -h -t tmpfs
sudo slabtop -o | head -15Naudojama swap savaime nėra problema
Serveris gali savaites laikyti retai naudojamus puslapius swap srityje be žalos. Problemų sukelia nuolatinis perkėlimas. Stebėkite vmstat stulpelius si ir so: nuolat už nulį didesnės reikšmės reiškia, kad sistema aktyviai perkelia puslapius tarp RAM ir swap, o tai yra tikro atminties trūkumo požymis.
swapon --show
vmstat 1 5Raskite, kas naudoja atmintį
Surikiuokite procesus pagal rezidentinę atmintį. RSS kiekvienam procesui priskaičiuoja puslapius, kuriuos jis bendrina su kitais procesais, todėl kelių procesų reikšmių negalima tiesiog sudėti. PSS palaikantys įrankiai, pavyzdžiui, smem, pateikia tikslesnę sumą, jei yra įdiegti.
ps -eo pid,user,rss,comm --sort=-rss | head -15Atpažinkite tikrą trūkumą
Požymiai – mažai prieinamos atminties, nuolatinis puslapių perkėlimas į swap ir iš jos bei procesai, kuriuos nutraukia atminties trūkumo valdymo mechanizmas. Patikrinkite branduolio žurnalą. Nevykdykite drop_caches vien tam, kad skaičiai atrodytų geriau: tai tik priverčia serverį iš naujo skaityti iš disko ir nieko neišsprendžia.
sudo journalctl -k --no-pager | grep -iE 'out of memory|oom-kill'Atmintis programoje CH-J Server Manager
System Monitor nuskaito šias reikšmes per SSH. Linux sistemoje used apskaičiuojama kaip MemTotal − MemFree − Buffers − Cached − SReclaimable, o available yra branduolio įvertis. Bendroji atmintis yra Cached dalis ir negali būti atlaisvinta, o juostos kategorijos nepersidengia. Kadangi formulė skiriasi nuo kai kurių free versijų, skaičiai gali nevisiškai sutapti. Taip pat rodoma swap ir jos naudojimo istorija. ZFS ARC atskirai nevertinama, todėl kompiuteriuose su ZFS ji skaičiuojama kaip naudojama atmintis.