Troubleshooting RAM: Difference between revisions
| (4 intermediate revisions by the same user not shown) | |||
| Line 31: | Line 31: | ||
--> # kill -15 <PID> <span style="font-style: italic;color:#4d4d4d"># Oprire controlată</span> | --> # kill -15 <PID> <span style="font-style: italic;color:#4d4d4d"># Oprire controlată</span> | ||
 # kill -9 <PID> <span style="font-style: italic;color:#4d4d4d"># Oprire forţată</span> |  # kill -9 <PID> <span style="font-style: italic;color:#4d4d4d"># Oprire forţată</span> | ||
</code> | |||
= 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 === | |||
<code class="mw-code mw-highlight plainlinks" style="display:block"><!-- | |||
--> # free -h <span style="font-style: italic;color:#4d4d4d"># Verifică utilizarea Swap-ului</span> | |||
 # for f in /proc/[0-9]*/smaps_rollup; do [ -f "$f" ] && awk '/Swap:/ {if($2>0) print FILENAME, $2, $3}' "$f" 2>/dev/null; done | awk -F/ '{pid=$3; swap=$5" "$6; cmdfile="/proc/"pid"/cmdline"; if ((getline cmd < cmdfile) > 0) {gsub(/\0/, " ", cmd); print swap, "["pid"]", cmd} else {print swap, "["pid"]", "Unknown"}; close(cmdfile)}' | sort -h -r | head -n 10 <span style="font-style: italic;color:#4d4d4d"># vezi exact ce procese ocupă spațiu în Swap</span> | |||
</code> | |||
=== Remediere === | |||
<code class="mw-code mw-highlight plainlinks" style="display:block"><!-- | |||
--> # sysctl vm.swappiness=10 <span style="font-style: italic;color:#4d4d4d"># Ajustează agresivitatea Swap-ului. 10 forţeaya kernelul să folosească RAM la maximum</span> | |||
 # swapoff -a && sudo swapon -a <span style="font-style: italic;color:#4d4d4d"># Golirea completă a Swap-ului. acesta funcţionează doar daca este disponibil suficient RAM</span> | |||
</code> | |||
Fix permanent al Swappiness | |||
<code class="mw-code mw-highlight plainlinks" style="display:block"><!-- | |||
--> # 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 | |||
 # sysctl -p <span style="font-style: italic;color:#4d4d4d"># aplică imediat modificările din fișier fără restart</span> | |||
</code> | </code> | ||
Latest revision as of 00:06, 21 October 2026
Serviciul se oprește brusc fără eroare vizibilă (OOM Killer Activ)[edit | edit source]
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[edit | edit source]
# 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[edit | edit source]
# 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)[edit | edit source]
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[edit | edit source]
# ps aux --sort=-%mem | head -n 10 # sortează primele 10 procese după consumul de RAM
# htop # top purişti ;)
Remediere[edit | edit source]
# kill -15 <PID> # Oprire controlată
# kill -9 <PID> # Oprire forţată
Serverul devine extrem de lent din cauza utilizării excesive a Swap-ului[edit | edit source]
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[edit | edit source]
# free -h # Verifică utilizarea Swap-ului
# for f in /proc/[0-9]*/smaps_rollup; do [ -f "$f" ] && awk '/Swap:/ {if($2>0) print FILENAME, $2, $3}' "$f" 2>/dev/null; done | awk -F/ '{pid=$3; swap=$5" "$6; cmdfile="/proc/"pid"/cmdline"; if ((getline cmd < cmdfile) > 0) {gsub(/\0/, " ", cmd); print swap, "["pid"]", cmd} else {print swap, "["pid"]", "Unknown"}; close(cmdfile)}' | sort -h -r | head -n 10 # vezi exact ce procese ocupă spațiu în Swap
Remediere[edit | edit source]
# sysctl vm.swappiness=10 # Ajustează agresivitatea Swap-ului. 10 forţeaya kernelul să folosească RAM la maximum
# swapoff -a && sudo swapon -a # Golirea completă a Swap-ului. acesta funcţionează doar daca este disponibil suficient RAM
Fix permanent al Swappiness
# 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
# sysctl -p # aplică imediat modificările din fișier fără restart