Troubleshooting CPU: Difference between revisions

From Linux Wiki
Jump to navigation Jump to search
No edit summary
 
(One intermediate revision by the same user not shown)
Line 3: Line 3:
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.
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 ==
=== Identificare ===
<code class="mw-code mw-highlight plainlinks" style="display:block"><!--
<code class="mw-code mw-highlight plainlinks" style="display:block"><!--
-->&#32;# ps aux --sort=-%cpu | head -n 11
-->&#32;# ps aux --sort=-%cpu | head -n 11
</code>
</code>


== Remediere ==
=== Remediere ===
<code class="mw-code mw-highlight plainlinks" style="display:block"><!--
<code class="mw-code mw-highlight plainlinks" style="display:block"><!--
-->&#32;# kill -15 <PID> <span style="font-style: italic;color:#4d4d4d"># Graceful kill</span>
-->&#32;# kill -15 <PID> <span style="font-style: italic;color:#4d4d4d"># Graceful kill</span>
Line 23: Line 23:
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.
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 ==
=== Identificare ===
<code class="mw-code mw-highlight plainlinks" style="display:block"><!--
<code class="mw-code mw-highlight plainlinks" style="display:block"><!--
-->&#32;# ps -eo pid,ppid,state,cmd | grep " D " <span style="font-style: italic;color:#4d4d4d"># vezi procesele blocate în "Uninterruptible Sleep"</span>
-->&#32;# ps -eo pid,ppid,state,cmd | grep " D " <span style="font-style: italic;color:#4d4d4d"># vezi procesele blocate în "Uninterruptible Sleep"</span>
Line 30: Line 30:
</code>
</code>


== Remediere ==
=== Remediere ===
<code class="mw-code mw-highlight plainlinks" style="display:block"><!--
<code class="mw-code mw-highlight plainlinks" style="display:block"><!--
-->&#32;# umount -f -l /path/to/mount <span style="font-style: italic;color:#4d4d4d"># umount NFS/CIFS blocat</span>
-->&#32;# umount -f -l /path/to/mount <span style="font-style: italic;color:#4d4d4d"># umount NFS/CIFS blocat</span>
Line 38: Line 38:
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.
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 ==
=== Identificare ===
<code class="mw-code mw-highlight plainlinks" style="display:block"><!--
<code class="mw-code mw-highlight plainlinks" style="display:block"><!--
-->&#32;# watch -d -n 1 "cat /proc/interrupts" <span style="font-style: italic;color:#4d4d4d"># arată care core/thread este încărcat de placa de reţea</span>
-->&#32;# watch -d -n 1 "cat /proc/interrupts" <span style="font-style: italic;color:#4d4d4d"># arată care core/thread este încărcat de placa de reţea</span>
</code>
</code>


== Remediere ==
=== Remediere ===
<code class="mw-code mw-highlight plainlinks" style="display:block"><!--
<code class="mw-code mw-highlight plainlinks" style="display:block"><!--
-->&#32;# systemctl enable --now irqbalance <span style="font-style: italic;color:#4d4d4d"># Activarea irqbalance</span>
-->&#32;# systemctl enable --now irqbalance <span style="font-style: italic;color:#4d4d4d"># Activarea irqbalance</span>
&#32;# ethtool -G ens18 rx 4096 tx 4096 <span style="font-style: italic;color:#4d4d4d"># Optimizare la nivel de NIC</span>
&#32;# ethtool -G ens18 rx 4096 tx 4096 <span style="font-style: italic;color:#4d4d4d"># Optimizare la nivel de NIC</span>
</code>
</code>
Pentru a putea activa și porni serviciul irqbalance, pachetul trebuie mai întâi instalat.
Pentru a putea activa și porni serviciul irqbalance, pachetul trebuie mai întâi instalat.
<code class="mw-code mw-highlight plainlinks" style="display:block"><!--
<code class="mw-code mw-highlight plainlinks" style="display:block"><!--

Latest revision as of 19:10, 20 October 2026

CPU la 100% cauzat de un proces legitim[edit | edit source]

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[edit | edit source]

# ps aux --sort=-%cpu | head -n 11

Remediere[edit | edit source]

# 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ă[edit | edit source]

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[edit | edit source]

# 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[edit | edit source]

# umount -f -l /path/to/mount # umount NFS/CIFS blocat

CPU sufocat de întreruperi de rețea[edit | edit source]

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[edit | edit source]

# watch -d -n 1 "cat /proc/interrupts" # arată care core/thread este încărcat de placa de reţea

Remediere[edit | edit source]

# 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