Troubleshooting RAM

From Linux Wiki
Jump to navigation Jump to search

Serviciul se oprește brusc fără eroare vizibilă (OOM Killer Activ)

Când sistemul rămâne complet fără memorie RAM și Swap, kernelul Linux activează mecanismul Out-Of-Memory (OOM) Killer. Acesta alege cel mai mare consumator de RAM (adesea MySQL/MariaDB, Java, Elasticsearch) și îl oprește instantaneu pentru a salva sistemul de la un crash total.

Identificare

# dmesg -T | grep -i -E 'oom|kill' # vei vedera "Main process exited, code=killed" # journalctl -xb | grep -i oom-killer # foloseşte journalctl pentru loguri mai vechi

Remediere

# systemctl start <serviciu> # Repornire temporară # echo -1000 > /proc/<PID_PROCES>/oom_score_adj # Ajustarea scorului OOM între -1000 (prioritate mare) şi 1000

Soluţia recomandată este de a adăuga memorie RAM/Swap

Memoria RAM este epuizată de procese "Runaway" (User Space Memory Leak)

Un serviciu sau un script custom are un "memory leak" (pierdere de memorie) și consumă progresiv tot RAM-ul disponibil, ducând sistemul în faza de degradare a performanței.

Identificare

# ps aux --sort=-%mem | head -n 10 # sortează primele 10 procese după consumul de RAM # htop # top purişti ;)

Remediere

# kill -15 <PID> # Oprire controlată # kill -9 <PID> # Oprire forţată

Serverul devine extrem de lent din cauza utilizării excesive a Swap-ului

Când memoria RAM fizică se apropie de 100%, Linux începe să mute paginile de memorie inactive pe discul hard/SSD care este mult mai lent decât RAM-ul iar sistemul intră într-o stare numită "thrashing"

Identificare

# free -h # Verifică utilizarea Swap-ului # awk '{if ($2>0) print $2, $3}' /proc/*/smaps_rollup | sort -n -r | head -n 10 # vezi exact ce procese ocupă spațiu în Swap

Remediere

# sysctl vm.swappiness=10 # Ajustează agresivitatea Swap-ului. 10 forţeaya kernelul să folosească RAM la maximum # grep -q "^vm.swappiness" /etc/sysctl.conf && sed -i 's/^vm.swappiness.*/vm.swappiness=10/' /etc/sysctl.conf || echo "vm.swappiness=10" >> /etc/sysctl.conf # Persistenţă Swappiness # swapoff -a && sudo swapon -a # Golirea completă a Swap-ului. acesta funcţionează doar daca este disponibil suficient RAM