Troubleshooting CPU
CPU la 100% cauzat de un proces legitim
Este cea mai comună situație. Un server web (Nginx/Apache), un proces Java (Tomcat/Elasticsearch) sau un script PHP/Python buclează la infinit și consumă tot procesorul.
Identificare
# ps aux --sort=-%cpu | head -n 11
Remediere
# kill -15 <PID> # Graceful kill
# kill -9 <PID> # Hard kill
Dacă procesul este important dar vrei să nu mai sufoce serverul, îi scazi prioritatea (crești valoarea nice de la 0 la 19):
# renice -n 15 -p <PID>
Load Average foarte mare, dar utilizarea CPU mică
Vezi un "Load Average" de 20 sau 50, dar în top/htop procesorul pare că stă degeaba (stare "wa" sau "iowait"). CPU nu lucrează, ci așteaptă după un disc lent, o conexiune de rețea (NFS/CIFS storage) sau un drive blocat.
Identificare
# ps -eo pid,ppid,state,cmd | grep " D " # vezi procesele blocate în "Uninterruptible Sleep"
# mpstat 1 5 # urmărește coloana %iowait
# iotop -o # verifică ce proces generează "I/O block"
Remediere
# umount -f -l /path/to/mount # umount NFS/CIFS blocat
CPU sufocat de întreruperi de rețea
Apare de obicei pe mașini virtuale cu trafic de rețea foarte intens (DB, HAProxy) unde CPU este încărcat cu procesearea pachetele de reţea.
Identificare
# watch -d -n 1 "cat /proc/interrupts" # arată care core/thread este încărcat de placa de reţea
Remediere
# systemctl enable --now irqbalance # Activarea irqbalance
# ethtool -G ens18 rx 4096 tx 4096 # Optimizare la nivel de NIC
Pentru a putea activa și porni serviciul irqbalance, pachetul trebuie mai întâi instalat.
# apt update && sudo apt install -y irqbalance
# dnf install -y irqbalance