Analisi del carico del server
Come monitorare l'utilizzo di CPU, memoria, disco e rete su un server Linux.
Il carico del server indica la percentuale di utilizzo delle risorse chiave — CPU, RAM e spazio su disco. Monitorare queste metriche consente di identificare rapidamente la causa dei problemi di performance.
L'hardware di un server si divide in quattro componenti principali: CPU, memoria, disco e interfaccia di rete. L'analisi del carico consiste nel raccogliere e interpretare le statistiche di ciascuno.
CPU
L'utility top offre una panoramica di base in tempo reale dell'utilizzo della CPU:
top
Esempio di output:
top - 13:29:39 up 7 days, 1:10, 1 user, load average: 0.03, 0.03, 0.00
Tasks: 104 total, 2 running, 102 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.3 us, 1.0 sy, 0.0 ni, 97.0 id, 0.0 wa, 0.0 hi, 1.3 si, 0.3 st
MiB Mem : 969.5 total, 68.8 free, 635.9 used, 264.8 buff/cache
MiB Swap: 0.0 total, 0.0 free, 0.0 used. 106.7 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
823 mysql 20 0 1852008 401812 0 S 1.0 40.5 81:24.20 mysqld
13 root 20 0 0 0 0 R 0.3 0.0 26:11.00 rcu_sched
695 redis 20 0 66776 4216 2100 S 0.3 0.4 19:55.21 redis-server
Metriche principali da monitorare:
us— tempo CPU impiegato dai processi utente. Un valore elevato indica che l'applicazione sta mettendo sotto pressione la CPU.id— tempo di inattività della CPU. In condizioni normali dovrebbe mantenersi tra l'80 e il 100%.wa— tempo di attesa per operazioni di I/O. Un valore elevato segnala un sovraccarico del sottosistema disco.
Se us supera stabilmente il 20%, valuta di ottimizzare l'applicazione o di scalare le risorse.
Per le statistiche per singolo core, installa mpstat dal pacchetto sysstat:
apt-get install sysstat
mpstat -P ALL
Esempio di output:
Linux 5.15.0-46-generic (dsde1139-22869.fornex.org) 09/06/2022 _x86_64_ (1 CPU)
02:37:21 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
02:37:21 PM all 0.90 0.00 0.74 0.13 0.00 0.96 0.32 0.00 0.00 96.95
02:37:21 PM 0 0.90 0.00 0.74 0.13 0.00 0.96 0.32 0.00 0.00 96.95
Per una panoramica più visiva, htop mostra il carico della CPU in un formato di facile lettura:
apt-get install htop
htop
Monitoraggio della CPU in htop
Memoria
Usa il comando free per verificare l'utilizzo della RAM:
free
Esempio di output:
total used free shared buff/cache available
Mem: 992724 655200 73968 86748 263556 104972
Swap: 0 0 0
Presta particolare attenzione a Swap — indica quanto spazio su disco viene utilizzato come memoria di overflow quando la RAM si esaurisce. Un basso livello di RAM libera da solo non è critico, ma una crescita dello Swap richiede un intervento immediato: aggiungi memoria oppure distribuisci il carico su più server.
Per un'analisi dettagliata dell'utilizzo della memoria:
cat /proc/meminfo
Esempio di output:
MemTotal: 992724 kB
MemFree: 73192 kB
MemAvailable: 104864 kB
Buffers: 10856 kB
Cached: 226868 kB
SwapCached: 0 kB
...
Disco
Inizia verificando lo spazio su disco disponibile:
df -h
Esempio di output:
Filesystem Size Used Avail Use% Mounted on
tmpfs 97M 732K 97M 1% /run
/dev/vda1 9.8G 8.5G 846M 92% /
tmpfs 485M 0 485M 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 97M 0 97M 0% /run/user/0
La colonna Use% mostra la percentuale di spazio occupato su ciascuna partizione.
Per monitorare l'attività di lettura/scrittura suddivisa per processo, usa iotop:
apt-get install iotop
iotop
Esempio di output:
Total DISK READ: 0.00 B/s | Total DISK WRITE: 0.00 B/s
Current DISK READ: 0.00 B/s | Current DISK WRITE: 0.00 B/s
TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND
1 be/4 root 0.00 B/s 0.00 B/s ?unavailable? init
2 be/4 root 0.00 B/s 0.00 B/s ?unavailable? [kthreadd]
...
Metriche principali:
Actual DISK READ— dati effettivamente letti dal disco (tenendo conto della cache).Actual DISK WRITE— dati effettivamente scritti sul disco.
Raccomandazioni in caso di carico disco elevato:
- Elevata attività di lettura dall'applicazione — abilita il caching APC.
- Elevata attività di lettura dal database — rivedi la configurazione del database.
- Elevata attività di lettura dal server web — valuta l'adozione di un cache HTTP.
- Elevata attività di scrittura — assicurati che i log di accesso e di debug siano disabilitati; le cause più probabili sono il database o i file caricati dagli utenti.
Rete
L'utility cbm mostra il traffico di rete in tempo reale per interfaccia:
apt-get install cbm
cbm
Esempio di output:
Interface Receive Transmit Total
lo 0.00 B/s 0.00 B/s 0.00 B/s
eth0 35.90 kB/s 758.75 B/s 36.65 kB/s
Un traffico di rete elevato non è di per sé un problema, ma valori sostenuti vicini al picco sono un segnale per iniziare a pianificare la scalabilità.
Statistiche combinate
L'utility dstat mostra un riepilogo in tempo reale di tutti i sottosistemi, aggiornato ogni secondo:
apt-get install dstat
dstat
Esempio di output:
--total-cpu-usage-- -dsk/total- -net/total- ---paging-- ---system--
usr sys idl wai stl| read writ| recv send| in out | int csw
2 1 97 0 0| 35k 29k| 0 0 | 0 0 | 683 702
1 0 99 0 0| 124k 0 | 39k 1162B| 0 0 |1003 822
3 4 86 6 1|3580k 8776k| 37k 522B| 0 0 |1161 1018
Colonne principali:
total-cpu-usage— carico della CPU.dsk/total— attività disco.net/total— attività di rete.
Aiuto
Hai domande o ti serve una mano? Scrivici tramite il sistema di ticket — siamo sempre qui per aiutarti!