CH-J Server Managerupravljanje strežnikov prek SSH
Meni
Vsi vodiči in članki →

Kako razumeti RAM, predpomnilnik in swap na strežniku Linux

Kaj pomenijo stolpci ukaza free, zakaj velika poraba pomnilnika pogosto ni težava in kateri znaki res kažejo na pomanjkanje pomnilnika.

Glejte available, ne free

Linux sicer neuporabljen pomnilnik uporablja kot diskovni predpomnilnik, zato je malo prostega pomnilnika na zdravem strežniku normalno. Stolpec available je ocena jedra, koliko pomnilnika lahko dobijo nova opravila brez uporabe swap. Spremljajte to številko. Natančen izračun used je odvisen od različice orodja, zato ga ne primerjajte med različnimi sistemi.

free -h
grep -E 'MemAvailable|Shmem:|SReclaimable' /proc/meminfo

Kaj je mogoče sprostiti iz predpomnilnika

Predpomnilnik strani je navadno mogoče sprostiti, ko aplikacije potrebujejo pomnilnik. Tudi deljeni pomnilnik in tmpfs (Shmem) sta prikazana pod cache, vendar ju ni mogoče preprosto zavreči, ker hranita podatke brez kopije na disku. Velik predpomnilnik ob nizki vrednosti available zato pogosto pomeni velik tmpfs ali segment deljenega pomnilnika.

df -h -t tmpfs
sudo slabtop -o | head -15

Uporaba swap sama po sebi ni težava

Strežnik lahko redko uporabljene strani več tednov brez škode hrani v swap. Težave povzroča neprestano premikanje. Spremljajte stolpca si in so v vmstat: vrednosti, ki ostajajo nad nič, pomenijo aktivno izmenjevanje med RAM in swap, kar kaže na dejansko pomanjkanje pomnilnika.

swapon --show
vmstat 1 5

Ugotovite, kaj porablja pomnilnik

Procese razvrstite po rezidenčnem pomnilniku. RSS strani, ki si jih deli več procesov, prišteje vsakemu od njih, zato vrednosti več procesov ne morete preprosto sešteti. Orodja s PSS, kot je smem, dajo ustreznejši seštevek, če jih imate nameščena.

ps -eo pid,user,rss,comm --sort=-rss | head -15

Prepoznajte dejansko pomanjkanje

Znaki so malo razpoložljivega pomnilnika, stalno izmenjevanje s swap in procesi, ki jih konča mehanizem out-of-memory killer. Preverite dnevnik jedra. Ne zaganjajte drop_caches, da bi bile številke lepše: strežnik bo le znova bral z diska, težava pa bo ostala.

sudo journalctl -k --no-pager | grep -iE 'out of memory|oom-kill'

Pomnilnik v CH-J Server Manager

System Monitor te vrednosti bere prek SSH. V Linuxu used izračuna kot MemTotal − MemFree − Buffers − Cached − SReclaimable, za available pa uporabi oceno jedra. Deljeni pomnilnik je del Cached in ga ni mogoče sprostiti; kategorije v vrstici se ne prekrivajo. Ker se formula razlikuje od nekaterih različic free, se številke morda ne bodo povsem ujemale. Prikazuje tudi swap z zgodovino uporabe. ZFS ARC ne obravnava ločeno, zato ga na gostiteljih ZFS šteje kot uporabljen pomnilnik.

Podrobna dokumentacija

man: free →

man: proc_meminfo →

Biometrično odklenjevanje in varnost →