Diagnosi di un carico elevato su un VPS | INTROSERV
EUR
european

EUR

usa

USD

Italy It
Ex. VAT Ex. VAT 0%

Diagnosi di un carico elevato su un VPS

Utilizzare htop, top e iotop-c per trovare il processo colpevole

Quando il tuo VPS inizia a rallentare – SSH sembra ritardato, i siti web rispondono lentamente o anche digitare nel terminale sembra lento – di solito significa che una o più risorse di sistema (CPU, RAM o I/O del disco) sono spinte al limite. Questa guida ti accompagna attraverso un processo pratico, passo dopo passo, per identificare cosa sta succedendo e quale processo è da incolpare, utilizzando tre strumenti standard di Linux: htop, top e iotop-c.

Info

Il pubblico è presunto essere amministratori di sistema principianti o intermedi, familiari con la riga di comando e i concetti base di Linux.

Primo passo: Sapere cosa significa realmente "carico elevato"

Molte persone vedono un "carico medio" elevato e vanno nel panico – ma non tutti i carichi elevati sono negativi. Chiarifichiamo questo.

Cos'è il "carico medio"?

Il "carico medio" ti dice quanti processi stanno aspettando la CPU in un dato momento. È mostrato come tre numeri (per gli ultimi 1, 5 e 15 minuti).

Esempio: uptime

Output:

17:41:25 up 2 days, 3:45, 1 user, load average: 2.34, 1.89, 1.42

Interpretazione:

  • 2.34 – carico medio nell'ultimo minuto
  • 1.89 – negli ultimi 5 minuti
  • 1.42 – negli ultimi 15 minuti

Ora, confronta quei numeri con il tuo numero di core della CPU. Se hai 2 core:

  • Un carico intorno a 2.0 significa che entrambe le CPU sono completamente utilizzate – il sistema è occupato, ma va bene.
  • Un carico molto più alto di 2.0 (come 3 o 4) significa che c'è una coda – troppi processi stanno aspettando.

Controlla quanti core hai:

nproc

Se il carico ≫ numero di core per un lungo periodo, è il momento di indagare.

Secondo passo: Ottieni una panoramica rapida con htop

htop è il modo più semplice per visualizzare cosa sta succedendo all'interno del tuo VPS in tempo reale.

Installa htop

Usa il comando adatto alla tua distribuzione Linux per installare:

  • sudo apt install htop per Ubuntu/Debian
  • sudo yum install htop per CentOS/RHEL

Eseguilo

Esegui il comando htop. Vedrai un'interfaccia colorata come questa:

interfaccia di htop che mostra le barre della CPU, le barre della memoria e l'elenco dei processi

Comprendere il layout

  • Le barre superiori mostrano l'uso della CPU, della memoria e dello swap in tempo reale.
  • Il carico medio è visibile nell'angolo in alto a destra.
  • L'elenco dei processi mostra cosa sta girando e quanta CPU e RAM utilizza ciascun processo.

Consigli di navigazione

  • Ordina per uso della CPU: premi F6, poi scegli "PERCENT_CPU"
  • Ordina per memoria: premi F6, scegli "PERCENT_MEM"
  • Vista ad albero (mostra processi padre/figlio): premi F5
  • Termina un processo: evidenzialo – premi F9 – scegli il segnale (il predefinito è 15, "termina")
  • Cerca un processo: premi F3, digita parte del suo nome (es. "nginx")

Cosa cercare

  • Processi con alta CPU% – questi stanno consumando la maggior parte del tempo della CPU.
  • Processi con alta MEM% – questi stanno consumando RAM e potrebbero costringere il sistema a fare swap.
  • Se un processo continua a riapparire in cima ogni pochi secondi, potrebbe essere uno script in loop o un servizio che si riavvia.

Esempio

Esegui htop. Se vedi qualcosa del genere:

htop che mostra il processo msty-local-studio in cima consumando alta CPU e memoria

È chiaro che msty-local-studio con PID 6346 sta usando più CPU e memoria di tutto il resto. Ora sai dove concentrare i tuoi prossimi controlli.

Terzo passo: Verifica incrociata con top

Mentre htop è amichevole, top è disponibile su ogni sistema Linux – nessuna installazione richiesta. È un buon ripiego quando hai solo accesso SSH a un ambiente minimo.

Eseguilo

Esegui il comando top. Vedrai un'interfaccia come questa:

interfaccia del comando top che mostra il riepilogo del sistema e l'elenco dei processi

Punti chiave

  • La linea %Cpu(s) mostra dove va il tempo della CPU:
    • us – processi utente
    • sy – compiti di sistema/kernel
    • wa – in attesa di I/O (disco)
  • %wa (attesa I/O) sopra il 10–15% spesso significa un collo di bottiglia del disco.
  • Il carico medio e il riepilogo delle attività ti dicono quanto è occupato il sistema.

Scorciatoie da tastiera utili

  • Shift + P – ordina per CPU
  • Shift + M – ordina per memoria
  • Shift + T – ordina per tempo di esecuzione del processo
  • 1 – attiva/disattiva l'uso della CPU per core
  • k – termina un processo (inserisci il PID quando richiesto)
  • q – esci da top

Quando usare top

Usa top quando:

  • htop non è installato (come su un sistema di recupero o un container Docker).
  • Vuoi uno strumento leggero che mostri l'equilibrio CPU vs. I/O in tempo reale.

Quarto passo: Se CPU e RAM sembrano a posto – Controlla l'I/O del disco usando iotop-c

A volte tutto sembra normale – l'uso della CPU non è alto, la memoria è a posto – eppure il sistema sembra bloccato. Comandi come ls o cd si bloccano per secondi, e il carico medio è ancora alto. Questo è un classico segno di attesa I/O, dove la CPU è inattiva ma in attesa che le operazioni del disco siano completate.

Installa iotop-c

Usa il comando adatto alla tua distribuzione Linux per installare:

  • sudo apt install iotop-c per Ubuntu/Debian
  • sudo yum install iotop-c per CentOS/RHEL

Abilita il monitoraggio I/O usando il comando:

sudo sysctl kernel.task_delayacct=1

Eseguilo

Esegui il comando come utente root: sudo iotop-c. Vedrai un'interfaccia come questa:

interfaccia di iotop-c che mostra l'attività I/O del disco per processo

Interpretazione

  • La colonna IO mostra quanto tempo ogni processo è bloccato in attesa di I/O.
  • Alto IO (es. 90–100%) – quel processo sta aspettando pesantemente sul disco.
  • Controlla se stai eseguendo backup, importazioni di dati di grandi dimensioni o lavori di compressione.

Cause comuni di sovraccarico I/O

  • Database (mysqld, postgres) che esegue una query di grandi dimensioni.
  • Script di backup (rsync, tar, dd) che copiano file enormi.
  • File di log che crescono incontrollabilmente in /var/log.
  • Swap mal configurato – se il sistema inizia a fare swap pesantemente, sovraccarica il disco.

Quinto passo: Correlare ciò che hai trovato

Ora che hai usato htop, top e iotop-c, è il momento di mettere insieme il puzzle.

Sintomo Causa Probabile Strumento da Controllare
Alto uso della CPU Script difettoso, processo pesante htop, top
Alto uso della memoria Perdita di memoria, troppi lavoratori htop
Alta attesa I/O, risposta lenta Collo di bottiglia del disco, swapping iotop-c, top
Alto carico ma CPU inattiva Esaustione I/O o memoria top, iotop-c

Controlla anche i log di sistema per avvisi:

journalctl -xe

o:

tail -n 50 /var/log/syslog

Potresti trovare messaggi su errori del kernel, montaggi falliti o processi uccisi dall'OOM (Out Of Memory) killer.

Sesto passo: Prendi provvedimenti

Una volta identificato il colpevole, decidi cosa fare dopo.

Riavvia o ferma il processo

sudo systemctl restart <service>

o, se necessario:

sudo kill -9 <pid>

Libera spazio su disco

Se l'uso del disco è alto, usa df -h per determinare quale partizione pulire, o sudo du -sh /var/log/* per determinare quali log pulire.

Riduci il carico del processo

  • Limita i cron job in modo che non vengano eseguiti contemporaneamente.
  • Regola i limiti delle query del database o la cache.
  • Riduci il numero di lavoratori in Nginx, Apache o Gunicorn.

Se nulla aiuta – aggiorna le risorse

Se raggiungi costantemente i limiti anche con carichi di lavoro ottimizzati, è il momento di aggiungere più CPU, RAM o passare a uno storage più veloce (es. da SSD a NVMe).

Settimo passo: Prevenzione e Monitoraggio Continuo

Non dovresti dover accedere manualmente e controllare il carico ogni volta. Puoi impostare il monitoraggio e gli avvisi con strumenti come: glances, netdata, prometheus, ecc.

Comandi di Riferimento Rapido

Obiettivo Comando
Mostra il carico medio uptime
Vedi il carico CPU/memoria visivamente htop
Vista minima dei processi top
Monitora l'attività del disco iotop-c
Visualizza i log journalctl -xe

Esempio Reale: Lo Script di Backup Fuori Controllo

Mettiamo tutto insieme con uno scenario reale.

Situazione

  • VPS con 2 core CPU e storage SSD
  • Improvvisamente sembra molto lento – ritardo SSH, timeout delle pagine web
  • uptime mostra: carico medio: 8.5, 7.3, 6.9 – troppo alto per 2 core.

Indagine

  1. Esegui htop: l'uso della CPU è basso – solo 10–15%. L'uso della memoria è a posto. Quindi non è legato alla CPU.
  2. Esegui top: %wa = 40% – sistema in attesa di I/O del disco.
  3. Esegui iotop-c:
    iotop-c che mostra uno script di backup in cima con alto uso I/O

    Bingo – uno script di backup che comprime una grande directory direttamente su disco.

Correzione

  • Ferma o riprogramma il backup per eseguirlo di notte.
  • Comprimi in /tmp (in memoria) prima di spostarlo su disco.
  • Usa ionice per ridurre la sua priorità sul disco.

Risultato

Le prestazioni del VPS tornano alla normalità istantaneamente.

Pensieri Finali

Diagnosticare un carico elevato non è magia – si tratta di controllare sistematicamente CPU, memoria e disco uno per uno. Usa i tuoi strumenti come un detective:

  1. La CPU è al massimo?htop, top
  2. La memoria è piena o sta facendo swap?htop, top
  3. Il disco è sovraccarico?iotop-c
  4. I log lo confermano?journalctl

Una volta identificato il processo colpevole, puoi decidere: ottimizzarlo, terminarlo o programmarlo meglio. Col tempo, inizierai a riconoscere i modelli – un processo di carico pesante, troppi cron job o un'app web mal configurata. È allora che smetti di spegnere incendi e inizi a gestire come un vero amministratore di sistema.

VAT

  • Other

    Ex. VAT

    0%
  • austria

    Austria

    20%
  • Belgium

    Belgium

    21%
  • Bulgaria

    Bulgaria

    20%
  • Croatia

    Croatia

    25%
  • Cyprus

    Cyprus

    19%
  • Czech Republic

    Czech Republic

    21%
  • Denmark

    Denmark

    25%
  • Estonia

    Estonia

    22%
  • France

    France

    20%
  • Finland

    Finland

    24%
  • Germany

    Germany

    19%
  • Greece

    Greece

    24%
  • Hungary

    Hungary

    27%
  • Ireland

    Ireland

    23%
  • Italy

    Italy

    22%
  • Latvia

    Latvia

    21%
  • Lithuania

    Lithuania

    21%
  • Luxembourg

    Luxembourg

    17%
  • Malta

    Malta

    18%
  • Netherlands

    Netherlands

    21%
  • Poland

    Poland

    23%
  • Portugal

    Portugal

    23%
  • Romania

    Romania

    19%
  • Slovakia

    Slovakia

    20%
  • Slovenia

    Slovenia

    22%
  • Spain

    Spain

    21%
  • Sweden

    Sweden

    25%
  • USA

    USA

    0%
european
states
  • germany
  • Español
  • Italiano
  • Poland
  • Русский
  • Slovenski
  • Türkçe
  • ukraine
  • kingdom
  • French
  • Hrvatska
  • Other
  • Austria
  • Belgium
  • Bulgaria
  • Croatia
  • Cyprus
  • Czech Republic
  • Denmark
  • Estonia
  • Finland
  • France
  • Germany
  • Greece
  • Hungary
  • Ireland
  • Italy
  • Latvia
  • Lithuania
  • Luxembourg
  • Malta
  • Netherlands
  • Poland
  • Portugal
  • Romania
  • Slovakia
  • Slovenia
  • Spain
  • Sweden
  • USA