Non so se ho utilizzato prima un host VPS con una configurazione elevata o se c'è un problema con le prestazioni dell'host VPS Alibaba Cloud Hong Kong appena spostato. In breve, ogni volta che scavo il sito di notte, il l'host diventa instabile e il carico del sistema diventa improvvisamente alto e improvvisamente basso. Utilizzando gli strumenti di analisi dei log del server: ngxtop e GoAccess, puoi anche scoprire che alcuni IP scansionano costantemente le porte del server e lo sfondo WP.

Tuttavia, la cosa più sconcertante è che dopo essere entrato in background WP, ​​ho aperto più di una dozzina di pagine contemporaneamente con un browser e ho utilizzato il comando Top per monitorare il carico del sistema VPS in tempo reale e ho scoperto che il carico aumentava in linea retta, da pochi decimi del livello originale a 3 o più. Quindi, scoprirai che l'accesso al sito web rallenta e le risposte ritardano. Questo mi fa semplicemente chiedere se ho acquistato un falso host VPS Alibaba Cloud.

Se hai riscontrato il mio stesso problema, puoi provare a seguire i comandi di monitoraggio del sistema Linux introdotti in questo articolo per creare un quadro completo di "CPU, memoria, I/O del disco, traffico della scheda di rete, processi di sistema, occupazione delle porte, ecc." la tua esperienza di host VPS”. Gli host VPS valgono davvero ogni centesimo. Gli host VPS economici non sono davvero adatti per l'esecuzione di programmi dinamici come WordPress.

Per ulteriori strumenti di utilità VPS Linux, puoi anche provare:

  1. Linux VPS monta Google Drive e Dropbox realizza la sincronizzazione e il backup dei dati dell'host VPS
  2. Tre strumenti gratuiti per aiutarti a rilevare l'autenticità dei server VPS: prestazioni dell'host VPS e metodi di test della velocità
  3. Commento WordPress Notifica WeChat e promemoria e-mail: salsa server e invio di e-mail SMTP di terze parti

Questo articolo è diviso in due parti: Se sai già come utilizzare un determinato comando di monitoraggio, puoi cercarlo rapidamente direttamente nel Manuale di riferimento rapido dei comandi di monitoraggio del sistema Linux. C'è una casella di ricerca nella parte superiore nell'angolo destro della tabella. Puoi inserirlo per cercare rapidamente la funzione o il comando desiderato. Se non hai familiarità con un determinato comando, puoi utilizzare il tasto di scelta rapida della funzione di visualizzazione della pagina Web del browser Chrome: ctrl+f e immettere il comando per passare direttamente ai dettagli.

Riepilogo dei comandi di monitoraggio del sistema Linux: CPU master, memoria, I/O del disco, informazioni sul traffico della scheda di rete per identificare rapidamente i colli di bottiglia delle prestazioni

PS: aggiornato il 14 aprile 2018, Linux dispone anche di un comando molto utile Crontab, che viene utilizzato per eseguire attività regolarmente. Riferimento: tutorial di base sulla sintassi e sul funzionamento delle attività pianificate del comando Linux Crontab-VPS/Server Automation .

Zero, manuale di riferimento rapido per il comando di monitoraggio del sistema Linux

OrdinefunzioneEsempi di utilizzo
gratuitoVisualizza l'utilizzo della memoria, inclusa la memoria fisica e la memoria virtualelibero -h o libero -m
vmstatFornisce statistiche sull'intero sistema, comprese statistiche sui processi del kernel, memoria virtuale, dischi, trap e attività della CPU.vmstat2 100
superioreVisualizzazione in tempo reale dell'utilizzo delle risorse e dello stato generale di ciascun processo nel sistemasuperiore
mpstatStrumento di monitoraggio del sistema in tempo reale che riporta statistiche relative alla CPUmpstat
sarRaccogli, segnala e salva l'utilizzo di CPU, memoria, porte di input e outputsar -n DEV 3 100
netstatControlla la connessione di rete di ciascuna porta della macchina per visualizzare le statistiche relative ai protocolli IP, TCP, UDP e ICMPnetstat -a
tcpdumpUtilizzato per acquisire o filtrare i pacchetti TCP/IP ricevuti o trasmessi su un'interfaccia specifica sulla retetcpdump -i eth0 -c 3
IPTrafUtilizzato per generare dati statistici tra cui informazioni TCP, conteggi UDP, informazioni ICMP e OSPF, informazioni sul carico Ethernet, informazioni sullo stato del nodo, errori di checksum IP, ecc.iptraf
postoControlla l'utilizzo dello spazio su disco del file system Linuxdf-h
iostatRaccogliere e visualizzare le statistiche sullo stato di input e output del dispositivo di archiviazione del sistemaiostat -x -k 2 100
iotopStrumenti principali per monitorare l'utilizzo dell'I/O del discoiotop
lsofUtilizzato per visualizzare tutti i file e i processi aperti sotto forma di elencolsof
in cimaCiò che viene mostrato è una combinazione di varie risorse di sistema (CPU, memoria, rete, I/O, kernel) ed è colorato in condizioni di carico elevato.in cima
htopÈ molto simile al comando top, uno strumento avanzato di monitoraggio interattivo dei processi Linux in tempo reale.htop
PSIl comando di visualizzazione dei processi più semplice ma anche molto potenteps ausiliario
sguardiMonitora CPU, carico medio, memoria, traffico di rete, I/O del disco, altri processori e utilizzo dello spazio del file systemsguardi
dstatUno strumento completo di statistiche sulle informazioni di sistema che può essere utilizzato per sostituire i comandi vmstat, iostat, netstat, nfsstat e ifstat.dstat
tempo di attivitàUtilizzato per verificare da quanto tempo il server è in esecuzione e quanti utenti hanno effettuato l'accesso e per apprendere rapidamente il carico del server.tempo di attività
dmesgUtilizzato principalmente per visualizzare le informazioni sul kernel. Utilizza dmesg per diagnosticare in modo efficace i guasti hardware della macchina o aggiungere problemi hardware.dmesg
mpstatUtilizzato per segnalare l'attività di ciascuna CPU di un host CPU multicanale, nonché lo stato della CPU dell'intero host.mpstat 2 3
nmonMonitora CPU, memoria, I/O, file system e risorse di rete. Per quanto riguarda l'utilizzo della memoria, è possibile visualizzare la memoria totale/rimanente, scambiare spazio e altre informazioni in tempo reale.nmon
mytopUtilizzato per monitorare i thread e le prestazioni di mysql. Ti offre una visione in tempo reale del tuo database e di quali query vengono elaborate.mytop
iftopUtilizzato per monitorare il traffico in tempo reale della scheda di rete (è possibile specificare il segmento di rete), risoluzione IP inversa, visualizzare informazioni sulla porta, ecc.iftop
jnettopMonitora il traffico di rete allo stesso modo ma in modo più visivo rispetto a iftop. Supporta inoltre l'output di testo personalizzato e può analizzare in modo approfondito i registri in modo amichevole e interattivo.jnettop
ngrepgrep per il livello di rete. Utilizza pcap e consente la corrispondenza dei pacchetti specificando espressioni regolari estese o espressioni esadecimali.ngrep
nmapPuò scansionare le porte aperte del tuo server e rilevare quale sistema operativo viene utilizzatonmap
TrascorrereControlla la dimensione di una directory nel sistema Linuxdu -sh nome della directory
fdiskVisualizza le informazioni sul disco rigido e sulla partizionefdisk -l

1. Monitoraggio della memoria

1.1  comando libero

free può essere utilizzato per controllare rapidamente l'utilizzo della memoria dell'host VPS, inclusa la memoria fisica e la memoria virtuale. Puoi aggiungere i parametri in seguito: -h e -m, altrimenti verrà visualizzato in kb per impostazione predefinita. I risultati dell'esecuzione del comando sono i seguenti:

Descrizione dei parametri rilevanti:

totale: dimensione della memoria fisica, ovvero la memoria effettiva della macchina

utilizzato: la dimensione della memoria utilizzata da . Questo valore include la memoria cache e effettivamente utilizzata dall'applicazione.

libero: dimensione della memoria non utilizzata

condivisa: dimensione della memoria condivisa, che è un modo di comunicazione tra processi

buffer: dimensione della memoria occupata dai buffer

cached: dimensione della memoria occupata dalla cache

1.2  comando vmstat

vmstat (Virtual Meomory Statistics, statistiche della memoria virtuale) è una statistica della situazione generale del sistema, comprese le statistiche dei processi del kernel, della memoria virtuale, dei dischi, delle trap e delle attività della CPU. Formato del comando: vmstat 2 100, dove 2 rappresenta l'intervallo di aggiornamento e 100 rappresenta il numero di uscite. I risultati dell'esecuzione del comando sono i seguenti:

Descrizione dei parametri rilevanti:

1 proc

  1. La colonna r rappresenta il numero di processi in esecuzione e in attesa di intervalli di tempo della CPU. Se questo valore è maggiore del numero di CPU del sistema per un lungo periodo, significa che le risorse della CPU sono insufficienti può prendere in considerazione l'aumento della CPU ;
  2. Colonna b indica il numero di processi in attesa di risorse, ad esempio in attesa di I/O o di scambio di memoria.

2 ricordi

  1. colonna swpd rappresenta la quantità di memoria commutata nell'area di scambio della memoria (in KB). Se il valore di swpd non è 0 o è relativamente grande, e i valori di si e così rimangono 0 per un lungo periodo, generalmente non è necessario preoccuparsi di questa situazione e non influirà sulle prestazioni del sistema;
  2. colonna libera rappresenta la quantità attuale di memoria fisica libera (in KB);
  3. colonna buff rappresenta la quantità di memoria nella cache dei buffer In genere, il buffering è richiesto solo per leggere e scrivere dispositivi a blocchi;
  4. colonna cache indica la quantità di memoria memorizzata nella cache della pagina. Generalmente viene memorizzata nella cache perché i file a cui si accede frequentemente verranno memorizzati nella cache. Se il valore della cache è maggiore, significa che ci sono più file memorizzati nella cache. Se il bi in IO è relativamente piccolo in questo momento, significa che l'efficienza del file system è migliore.

3 scambiare

  1. si colonna indica la quantità di memoria trasferita dal disco all'area di scambio della memoria;
  2. quindi la colonna rappresenta la quantità trasferita dalla memoria al disco, ovvero la quantità di area di scambio della memoria immessa nella memoria
  3. In circostanze normali, i valori​​di si e so sono entrambi 0. Se i valori​​di si e so non sono 0 per un lungo periodo, significa che la memoria del sistema è insufficiente ed è necessario valutare se aumentare la memoria del sistema.

4IO

  1. bi colonna rappresenta la quantità totale di dati letti dal dispositivo a blocchi (ovvero disco letto, unità KB/secondo)
  2. colonna bo rappresenta la quantità totale di dati scritti sul dispositivo a blocchi (ovvero, scrittura su disco, in KB/secondo)
    Il valore di riferimento bi+bo impostato qui è 1000, Se supera 1000 e un valore wa relativamente grande indica il collo di bottiglia delle prestazioni di I/O del disco di sistema .

5 sistemi

  1. nella colonna rappresenta il numero di interruzioni del dispositivo al secondo osservate in un certo intervallo di tempo;
  2. colonna cs rappresenta il numero di cambi di contesto generati al secondo.
    Maggiori sono i due valori precedenti, maggiore sarà il tempo della CPU che vedrai consumato dal kernel.

6CPU

  1. la colonna mostra la percentuale di tempo in cui il processo utente ha utilizzato la CPU. Quando il valore di us è relativamente alto, significa che il processo utente consuma molto tempo della CPU Se è superiore al 50% per un lungo periodo, è necessario considerare l'ottimizzazione del programma o qualcosa del genere.
  2. La colonna sy mostra la percentuale di tempo in cui il processo del kernel ha consumato la CPU. Quando il valore di sy è relativamente alto, significa che il kernel consuma molto tempo della CPU. Se us+sy supera l'80%, significa che le risorse della CPU sono insufficienti;
  3. colonna id mostra la percentuale di tempo in cui la CPU è inattiva;
  4. la colonna wa rappresenta la percentuale di tempo CPU occupata dall'attesa IO. Maggiore è il valore wa, più grave è l'attesa IO. Se il valore wa supera il 20%, significa che l'attesa IO è grave .
  5. la prima colonna generalmente non preoccupa, la percentuale di tempo occupata dalla macchina virtuale.

2. Monitoraggio della CPU

2.1  Comando TOP

Il comando top è uno strumento di analisi delle prestazioni comunemente utilizzato sotto Linux, che può visualizzare l'utilizzo delle risorse e lo stato generale di ciascun processo nel sistema in tempo reale. I risultati in esecuzione sono i seguenti:

Descrizione dei parametri correlati:

prima riga:

  1. 14:36:09: questa è l'ora del sistema durante il test wzfou.com
  2. su xxx giorni, 11:13: tempo di funzionamento del sistema, il sistema è in funzione da xx giorni, 11 ore e 13 minuti.
  3. 2 utenti: numero di utenti attualmente connessi
  4. carico medio: carico del sistema, ovvero la lunghezza media della coda delle attività. I tre valori rappresentano rispettivamente il carico medio nell'ultimo minuto, negli ultimi 5 minuti e negli ultimi 15 minuti - supera N (numero di core della CPU), indicando che il sistema sta funzionando a pieno carico . Puoi anche visualizzare il carico medio tramite il comando $w o $uptime.

seconda linea:

  1. Visualizza il numero totale di processi, il numero di processi in esecuzione, il numero di processi dormienti, il numero di processi interrotti e il numero di processi zombie

La terza riga:

  1. %us: la percentuale di CPU consumata dal processo utente
  2. %sy: percentuale di CPU consumata dal processo del kernel
  3. %ni: la percentuale di CPU occupata dai processi che hanno cambiato la loro priorità
  4. %id: percentuale di CPU inattiva
  5. %wa: percentuale di CPU consumata dall'attesa IO

2.2  comando mpstat

mpstat (Statistiche multiprocessore, statistiche multiprocessore) è uno strumento di monitoraggio del sistema in tempo reale che riporta informazioni statistiche relative alla CPU, che sono archiviate nel file /proc/stat. Formato: mpstat -P ALL 2 # ALL significa visualizzare tutte le CPU oppure è possibile specificare una determinata CPU 2 significa intervallo di aggiornamento;

L'effetto del comando è il seguente:

3. Monitoraggio della rete

3.1  comando sar

SAR è un comando utilizzato nei sistemi operativi Unix e Linux per raccogliere, segnalare e salvare l'utilizzo di CPU, memoria e porta di input e output. Il comando SAR può generare report dinamicamente o salvare report in file di registro. Formato del comando: sar -n DEV 3 100. L'effetto è il seguente:

I parametri rilevanti sono spiegati come segue:

IFACE: il nome del dispositivo di rete

rxpck/s: numero di pacchetti ricevuti al secondo

txpck/s: numero di pacchetti inviati al secondo

rxkB/s: numero di byte ricevuti al secondo

txkB/s: numero di byte inviati al secondo

3.2 stato netto

Il comando netstat viene generalmente utilizzato per verificare la connessione di rete di ciascuna porta della macchina e per visualizzare dati statistici relativi ai protocolli IP, TCP, UDP e ICMP.

Seleziona alcune opzioni come segue:

-a, --all, --listening     显示所有连接中的Socket。
-n, --numeric 以数字形式显示地址和端口号。
-t, -–tcp 显示TCP传输协议的连线状况。
-u, -–udp 显示UDP传输协议的连线状况。
-p, --programs 显示正在使用socket的程序名/进程ID
-l, --listening 显示监控中的服务器的Socket。
-o, --timers 显示计时器。
-s, --statistics 显示每个网络协议的统计信息(比如SNMP)
-i, --interfaces 显示网络界面信息表单(网卡列表)
-r, --route 显示路由表

Quelli comunemente usati:

$ netstat -aup        # 输出所有UDP连接状况
$ netstat -atp # 输出所有TCP连接状况
$ netstat -s # 显示各个协议的网络统计信息
$ netstat -i # 显示网卡列表
$ netstat -r # 显示路由表信息

netstat è molto utile per difendersi dagli attacchi. Un esempio comunemente utilizzato da wzfou.com è il seguente:

netstat -n -p|grep SYN_REC | wc -l

Il comando precedente può scoprire quante connessioni SYNC_REC attive ha il server corrente. Normalmente, questo valore è molto piccolo, preferibilmente inferiore a 5. Quando si verificano attacchi DoS o mail bomb questo valore è piuttosto alto. Inoltre, questo valore ha molto a che fare con il sistema. Alcuni server hanno valori molto alti, il che è normale.

netstat -n -p | grep SYN_REC | sort -u

Il comando precedente può elencare tutti gli indirizzi IP connessi.

netstat -n -p | grep SYN_REC | awk '{print $5}' | awk -F: '{print $1}'

    Il comando precedente può elencare gli indirizzi IP di tutti i nodi che inviano connessioni SYN_REC.

    netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n

    Il comando precedente può utilizzare il comando netstat per calcolare il numero di connessioni da ciascun host al computer locale.

    netstat -anp |grep 'tcp|udp' | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n

    Il comando precedente può elencare i numeri IP di tutte le connessioni UDP o TCP connesse a questa macchina.

    netstat -ntu | grep ESTAB | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr

    Il comando precedente verifica le connessioni STABILITE ed elenca il numero di connessioni per indirizzo IP.

    netstat -plan|grep :80|awk {'print $5'}|cut -d: -f 1|sort|uniq -c|sort -nk 1

    Il comando precedente può elencare tutti gli indirizzi IP collegati alla porta 80 di questa macchina e il loro numero di connessioni. La porta 80 viene generalmente utilizzata per gestire le richieste di pagine Web HTTP.

    Per difendersi dagli attacchi CC, puoi anche utilizzare i seguenti metodi per rilevare:

    Visualizza il numero di connessioni per tutte le porte 80

    1. netstat -nat|grep -i "80"|wc -l

    Ordina gli IP connessi per numero di connessioni

    1. netstat -anp |. grep 'tcp|udp' |
    2. netstat -ntu |. awk '{stampa $5}' |. cut -d: -f1 |. sort |
    3. netstat -ntu |. awk '{stampa $5}' |. egrep -o "[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[ 0-9]{1,3}" | sort | uniq -c | sort -nr

    Visualizza lo stato della connessione TCP

    1. netstat -nat |awk ‘{print $6}’|sort|uniq -c|sort -rn
    2. netstat -n |. awk '/^tcp/ {print $NF}'|sort|uniq -c|sort -rn
    3. netstat -n |. awk '/^tcp/ {++S[$NF]};END {for(a in S) print a, S[a]}'
    4. netstat -n |. awk '/^tcp/ {++stato[$NF]} END {for(chiave nello stato) print chiave,”t”,stato[chiave]}'
    5. netstat -n |. awk '/^tcp/ {++arr[$NF]};END {for(k in arr) print k,”t”,arr[k]}'
    6. netstat -ant |. awk '{print $NF}' |. grep -v '[a-z]' |

    Visualizza i 20 IP con il maggior numero di connessioni sulla porta 80

    1. cat /www/web_logs/wzfou.com_access.log|awk ‘{print $1}’|sort|uniq -c|sort -nr|head -100
    2. tail -n 10000 /www/web_logs/wzfou.com_access.log|awk ‘{print $1}’|sort|uniq -c|sort -nr|head -100
    3. cat /www/web_logs/wzfou.com_access.log|awk ‘{print $1}’|sort|uniq -c|sort -nr|head -100
    4. netstat -anlp|grep 80|grep tcp|awk ‘{print $5}’|awk -F: ‘{print $1}’|sort|uniq -c|sort -nr|head -n20
    5. netstat -ant |awk '/:80/{split($5,ip,":");++A[ip[1]]}END{for(i in A) print A,i}' |sort -rn |testa -n20

    Usa tcpdump per sniffare l'accesso alla porta 80 per vedere chi è il più alto

    1. tcpdump -i eth0 -tnn dst porta 80 -c 1000 |. awk -F”.” '{print $1″.”$2″.”$3″.”$4}' |. sort |. 20

    Trova più connessioni time_wait

    1. netstat -n|grep TIME_WAIT|awk ‘{print $5}’|sort|uniq -c|sort -rn|head -n20

    Trova più connessioni SYN

    1. netstat -an |. grep SYN |. awk '{print $5}' |. awk -F: '{print $1}' |. sort |

    Alcuni comandi comuni per utilizzare iptables per bloccare segmenti IP sotto Linux:

    Il comando per bloccare un singolo IP è:

    1. iptables -I INPUT -s 211.1.0.0 -j DROP

    Il comando per bloccare un segmento IP è:

    1. iptables -I INPUT -s 211.1.0.0/16 -j DROP
    2. iptables -I INPUT -s 211.2.0.0/16 -j DROP
    3. iptables -I INPUT -s 211.3.0.0/16 -j DROP

    Il comando per sigillare l'intera sezione è:

    1. iptables -I INPUT -s 211.0.0.0/8 -j DROP

    Il comando per sigillare più paragrafi è:

    1. iptables -I INPUT -s 61.37.80.0/24 -j DROP
    2. iptables -I INPUT -s 61.37.81.0/24 -j DROP

    3.3  comando tcpdump

    Tcpdump è uno degli analizzatori di pacchetti di rete o programmi di monitoraggio dei pacchetti più utilizzati. Viene utilizzato per acquisire o filtrare i pacchetti TCP/IP ricevuti o trasmessi su interfacce specifiche sulla rete. Formato: tcpdump -i eth0 -c 3

    Questo comando non viene fornito con il sistema e potrebbe essere necessario installarlo manualmente. L'effetto dell'esecuzione del comando è il seguente:

    3.4 Traf.IP

    iptraf è un monitor LAN IP basato su ncurses, utilizzato per generare dati statistici tra cui informazioni TCP, conteggi UDP, informazioni ICMP e OSPF, informazioni sul carico Ethernet, informazioni sullo stato del nodo, errori di checksum IP, ecc. Statistiche sull'interfaccia semplici e dettagliate, inclusi conteggi di pacchetti IP, TCP, UDP, ICMP, non IP e altri IP, errori di checksum IP, attività dell'interfaccia e conteggi delle dimensioni dei pacchetti.

    Formato del comando: iptraf. Verranno quindi visualizzati diversi menu di monitoraggio, con i seguenti effetti:

    4. Monitoraggio del disco

    4.1 df comando

    La funzione del comando df è verificare l'utilizzo dello spazio su disco del file system Linux. Se non viene specificato alcun nome file, vengono visualizzati tutti i file system attualmente montati, in KB per impostazione predefinita. Formato comunemente utilizzato: $ df -h. L'effetto è il seguente:

    I parametri rilevanti sono spiegati come segue:

    -a  Elenco di tutti i file system

    -h  viene visualizzato in formato leggibile dall'uomo

    -i  Visualizza le informazioni sull'inode

    -T  visualizza il tipo di file system

    -l  Mostra solo i file system locali

    -k  in KB

    -m  in MB

    4.2  comando iostat

    iostat è un semplice strumento per raccogliere e visualizzare statistiche sullo stato di input e output dei dispositivi di archiviazione del sistema. Questo strumento viene spesso utilizzato per tenere traccia dei problemi di prestazioni con i dispositivi di archiviazione, inclusi dispositivi, dischi locali e dischi remoti come l'utilizzo di NFS. Formati comunemente usati:

    $ iostat -x -k 2 100        # 2表示刷新间隔,100表示刷新次数

    L'effetto è il seguente:

    iostat viene utilizzato principalmente per monitorare l'I/O del disco. Innanzitutto, restituisce i dati medi delle CPU (avg-cpu). Possiamo vedere l'elemento %iowait Vengono forniti anche alcuni dati più dettagliati sullo stato degli I/O, come ad esempio:

    r/s: il numero di letture dal dispositivo I/O completate al secondo.

    w/s: il numero di scritture sul dispositivo I/O completate al secondo.

    rkB/s: il numero di K byte letti al secondo è la metà di rsect/s perché la dimensione di ciascun settore è 512 byte.

    wkB/s: il numero di K byte scritti al secondo è la metà di wsect/s.

    avgrq-sz: dimensione media dei dati (settori) per operazione I/O del dispositivo.

    avgqu-sz: lunghezza media della coda I/O.

    attendono: tempo di attesa medio (millisecondi) per ciascuna operazione di I/O del dispositivo.

    svctm: tempo di servizio medio (millisecondi) per operazione I/O del dispositivo.

    %util: quale percentuale di secondo viene utilizzata per le operazioni di I/O o per quanto tempo la coda di I/O non è vuota.

    4.3  comando iotop

    Il comando iotop è uno degli strumenti principali utilizzati per monitorare l'utilizzo dell'I/O del disco. iotop ha un'interfaccia utente simile a top, inclusi PID, utente, I/O, processo e altre informazioni correlate. La maggior parte degli strumenti di statistica IO sotto Linux, come iostat e nmon, possono solo contare la lettura e la scrittura di per dispositivo. Se vuoi sapere come ciascun processo utilizza IO, sarà problematico utilizzare il comando iotop controllalo facilmente.

    I parametri comunemente utilizzati di iotop sono i seguenti:

    –version Visualizza il numero di versione del programma
    -h, –help Visualizza le informazioni della guida
    -o, –only Visualizza solo i processi con operazioni IO
    -b, –batch modalità non interattiva
    -n, – iter= Imposta il numero di iterazioni
    -d, –delay frequenza di aggiornamento, il valore predefinito è 1 secondo
    -p, –pid visualizza l'IO del numero di processo specificato, il valore predefinito è tutti i processi
    -u , –user visualizza l'IO specificato dei processi utente, il valore predefinito è tutti gli utenti
    -P, –processes esamina solo i processi, non i thread
    -a, –accumulated esamina l'IO accumulato, non l'IO in tempo reale
    -k, –kilobyte in KB Visualizza IO in unità invece di visualizzarlo nell'unità più semplice
    -t, –time Aggiungi un timestamp a ogni riga e abilita –batch
    -q per impostazione predefinita, – quit non visualizza le informazioni sull'intestazione

    L'effetto dell'esecuzione è il seguente:

    4.4  comando lsof

    Elenca i file aperti: lsof. Viene comunemente utilizzato per visualizzare tutti i file e i processi aperti in un elenco. I file aperti includono file su disco, socket di rete, pipe, dispositivi e processi. Una delle situazioni principali in cui utilizzare questo comando è quando non riesce a montare il disco e visualizza un messaggio di errore che indica che un file è in uso o aperto. Usando questo comando puoi facilmente vedere quale file viene utilizzato.

    5. Monitoraggio del processo

    5.1  un comandoTOP

    Il comando intop è un comando di monitoraggio dell'ambiente terminale. Mostra una combinazione di varie risorse di sistema (CPU, memoria, rete, I/O, kernel) ed è codificato a colori in condizioni di carico elevato. atop può essere considerato una versione migliorata di top Se il comando atop mostra che non esiste, è necessario yum o apt-get per installarlo. L'effetto è il seguente:

    Descrizione dei parametri correlati:

    Colonna ATOP : questa colonna visualizza il nome host, la data di campionamento delle informazioni e il punto temporale

    colonna PRC: questa colonna visualizza lo stato di esecuzione complessivo del processo

    1. I campi sys e usr indicano il tempo di esecuzione del processo rispettivamente in modalità kernel e modalità utente.
    2. Il campo #proc indica il numero totale di processi
    3. Il campo #zombie indica il numero di processi zombie
    4. Il campo #exit indica il numero di processi terminati durante il periodo di campionamento superiore

    colonna CPU : questa colonna mostra l'utilizzo dell'intera CPU (ovvero, la CPU multi-core come un'intera risorsa CPU). Sappiamo che la CPU può essere utilizzata per eseguire processi, gestire gli interrupt o essere attiva uno stato inattivo (lo stato inattivo è diviso in due tipi, uno è il processo attivo in attesa dell'I/O del disco che causa l'inattività della CPU, l'altro è completamente inattivo)

    1. I campi sys e usr indicano la proporzione del tempo CPU occupato dal processo in modalità kernel e modalità utente quando la CPU viene utilizzata per elaborare il processo.
    2. Il campo IRQ indica la proporzione del tempo impiegato dalla CPU nell'elaborazione degli interrupt
    3. Il campo inattivo indica la percentuale di tempo in cui la CPU è completamente inattiva.
    4. Il campo di attesa indica la percentuale di tempo in cui la CPU è nello stato "il processo è in attesa dell'I/O del disco che rende la CPU inattiva"

    La somma dei valori indicati in ciascun campo della colonna CPU risulta in N00%, dove N è il numero di core della CPU.

    colonna CPU: questa colonna mostra l'utilizzo di una determinata CPU core. Il significato di ciascun campo può essere riferito alla colonna CPU. La somma di ciascun valore di campo è 100%.

    colonna CPL: questa colonna visualizza il carico della CPU

    1. Campi avg1, avg5 e avg15: numero medio di processi nella coda di esecuzione negli ultimi 1, 5 e 15 minuti
    2. Il campo csw indica il numero di scambi di contesto
    3. Il campo intr indica il numero di occorrenze di interrupt

    Colonna MEM: questa colonna indica l'utilizzo della memoria

    1. Il campo tot indica la quantità totale di memoria fisica
    2. Il campo libero indica la dimensione della memoria libera
    3. Il campo cache indica la dimensione della memoria utilizzata per la memorizzazione nella cache delle pagine
    4. Il campo buff indica la dimensione della memoria utilizzata per la memorizzazione nella cache dei file
    5. Il campo lastra indica la dimensione della memoria occupata dal kernel del sistema.

    Colonna SWP: questa colonna indica l'utilizzo dello spazio di swap

    1. Il campo tot indica la quantità totale di area di scambio
    2. Il campo libero indica la dimensione dello spazio di swap libero

    colonna PAG: questa colonna indica lo stato di paging della memoria virtuale

    campi swin, swout: numero di pagine di memoria scambiate dentro e fuori

    Colonna DSK : questa colonna indica l'utilizzo del disco. Ogni dispositivo disco corrisponde a una colonna. Se è presente un dispositivo sdb, viene aggiunta un'ulteriore colonna di informazioni DSK.

    1. campo sda: identificazione del dispositivo disco
    2. campo occupato: rapporto disco occupato
    3. campi di lettura e scrittura: numero di richieste di lettura e scrittura

    Colonna NET : più colonne di NET mostrano lo stato della rete, incluso il livello di trasporto (TCP e UDP), il livello IP e le informazioni su ciascuna porta di rete attiva

    1. Il campo XXXi  indica il numero di pacchetti ricevuti da ciascun livello o porta di rete attiva.
    2. Il campo XXXo indica il numero di pacchetti inviati da ciascun livello o porta di rete attiva

    5.2  comando htop

    htop è uno strumento interattivo molto avanzato per il monitoraggio dei processi Linux in tempo reale. È molto simile al comando top, ma ha funzionalità più ricche, come la gestione intuitiva dei processi, tasti di scelta rapida, visualizzazione verticale e orizzontale dei processi, ecc.

    L'effetto del comando è il seguente:

    5.3  comando ps

    Il comando ps (stato del processo, stato del processo) è il comando di visualizzazione dei processi più semplice e molto potente. Il comando più comunemente utilizzato è ps aux: visualizza tutti i processi correnti

    $ ps aux | grep root       # 输出root用户的所有进程
    $ ps -p <pid> -L # 显示进程<pid>的所有线程
    $ ps -e -o pid,uname,pcpu,pmem,comm # 定制显示的列
    $ ps -o lstart <pid> # 显示进程的启动时间

    L'output del comando ps può essere ordinato in base a qualsiasi colonna utilizzando la chiave di ordinamento interna (alias della colonna), ad esempio:

    $ ps aux --sort=+rss         # 按内存升序排列
    $ ps aux --sort=-rss # 按内存降序排列
    $ ps aux --sort=+%cpu # 按cpu升序排列
    $ ps aux --sort=-%cpu # 按cpu降序排列

    6. Strumento di monitoraggio del sistema tutto in uno

    Gli strumenti condivisi sopra sono tutti strumenti singoli per visualizzare il disco del sistema Linux, la CPU, la memoria e altri indicatori. Se vogliamo scoprire rapidamente il collo di bottiglia delle prestazioni dell'host VPS, possiamo utilizzare i seguenti strumenti "tutto in uno":

    6.1  strumento sguardi

    Glances è un software gratuito con licenza GPL utilizzato per monitorare i sistemi operativi GNU/Linux e FreeBSD. Attraverso Glances, possiamo monitorare CPU, carico medio, memoria, traffico di rete, I/O del disco, altri processori e condizioni di utilizzo dello spazio del file system. Questo è ciò che wzfou.com utilizza per il monitoraggio. Sintassi: sguardi

    Gli sguardi utilizzeranno i seguenti colori per rappresentare lo stato: Verde: OK (tutto è normale) Blu: ATTENZIONE (richiede attenzione) Viola: ATTENZIONE (avviso) Rosso: CRITICO (grave). La soglia può essere impostata nel file di configurazione In genere, la soglia è impostata su (attenzione=50, avviso=70, critica=90) per impostazione predefinita. L'effetto è il seguente: (clicca per ingrandire)

    Glances fornisce anche più tasti di scelta rapida che possono attivare e disattivare le opzioni delle informazioni di output durante l'esecuzione, ad esempio:

    a – Ordinare automaticamente i processi

    c – Ordina i processi in base alla percentuale di CPU

    m – Ordina i processi in base alla percentuale di memoria

    p – Ordina i processi in ordine alfabetico in base al nome del processo

    i – Ordina i processi per frequenza di lettura e scrittura (I/O)

    d – Mostra/nascondi le statistiche I/O del disco

    f – Mostra/nascondi le statistiche del file system

    n – Mostra/nascondi le statistiche dell'interfaccia di rete

    s – Mostra/nascondi le statistiche del sensore

    y – Mostra/nasconde le statistiche sulla temperatura del disco rigido

    l - mostra/nascondi registro (log)

    b – Commutare le unità I/O di rete (byte/bit)

    w – elimina il registro degli avvisi

    x: rimuove gli avvisi e i registri critici

    1 – Alterna tra l'utilizzo globale della CPU e l'utilizzo per CPU

    h – Mostra/nasconde questa schermata di aiuto

    t – Sfoglia gli I/O di rete in gruppi

    u – Sfoglia gli I/O di rete in forma cumulativa

    q – esci (funzionano anche ‘ESC’ e ‘Ctrl&C’)

    6.2  strumento dstat

    Il comando dstat è uno strumento utilizzato per sostituire i comandi vmstat, iostat, netstat, nfsstat e ifstat. È uno strumento completo per le statistiche sulle informazioni di sistema. Rispetto a sysstat, dstat ha un'interfaccia colorata. Quando si osservano manualmente le condizioni delle prestazioni, i dati sono più evidenti e facili da osservare; e dstat supporta l'aggiornamento istantaneo. Ad esempio, inserendo dstat 3 verranno raccolti ogni tre secondi, ma verranno raccolti i dati più recenti essere aggiornato ogni secondo spettacolo.

    Utilizzare dstat direttamente Il parametro -cdngy viene utilizzato per impostazione predefinita per visualizzare rispettivamente le informazioni su CPU, disco, pagina e sistema. L'impostazione predefinita è visualizzare un messaggio ogni 1 secondo. È possibile specificare l'intervallo di tempo per la visualizzazione di un'informazione alla fine. Ad esempio, dstat 5 significa che verrà visualizzata un'informazione ogni 5 secondi e dstat 5 10 significa che verrà visualizzata un'informazione ogni 5 secondi. Verranno visualizzate un totale di 10 informazioni. come segue:

    Descrizione delle informazioni visualizzate dall'output predefinito:

    Proc

    1. r: il numero di processi in esecuzione e in attesa (intervallo di tempo della CPU). Questo valore può essere utilizzato anche per determinare se la CPU deve essere aumentata (a lungo termine maggiore di 1).
    2. b: il numero di processi in uno stato senza interruzioni. Le situazioni comuni sono causate da IO.

    Memoria

    1. swpd: passa alla memoria nella memoria di swap (impostazione predefinita in KB). Se il valore di swpd non è 0, o è relativamente grande, ad esempio superiore a 100 M, ma i valori di si e così sono stati 0 per molto tempo, non dobbiamo preoccuparci di questa situazione, ed è non influenzerà le prestazioni del sistema.
    2. free: memoria fisica libera
    3. buff: utilizzato come memoria cache buffer, buffering per la lettura e la scrittura dei dispositivi a blocchi
    4. cache: memoria come cache della pagina, cache del file system. Se il valore della cache è grande, significa che ci sono molti file nella cache. Se i file a cui si accede frequentemente possono essere memorizzati nella cache, l'IO bi letto del disco sarà molto piccolo.

    Scambio

    1. si: scambia l'utilizzo della memoria, trasferito in memoria dal disco
    2. quindi: scambia l'utilizzo della memoria, trasferisci dalla memoria al disco

    Quando c'è abbastanza memoria, questi due valori​​sono entrambi 0. Se questi due valori​​sono maggiori di 0 per un lungo periodo, le prestazioni del sistema ne risentiranno. Le risorse di I/O del disco e della CPU verranno consumate.

    Ho scoperto che alcuni amici pensano che la memoria non sia sufficiente quando vedono che la memoria libera (libera) è molto piccola o vicina a 0. In effetti, non puoi solo guardarlo, ma anche combinare si e così se c'è molto poco gratuiti, ma sì, ce ne sono anche pochissimi quindi (per lo più 0), quindi non preoccuparti, le prestazioni del sistema non saranno influenzate in questo momento.

    I/O del disco

    1. bi: la quantità totale di dati letti dal dispositivo a blocchi (disco di lettura) (KB/s)
    2. bo: la quantità totale di dati scritti sul dispositivo a blocchi (scrittura su disco) (KB/s)

    Nota: durante la lettura e la scrittura di dischi casuali, maggiori sono questi due valori (ad esempio superiori a 1 M), maggiore sarà il valore atteso dalla CPU in IO.

    Sistema

    1. in: numero di interruzioni generate al secondo
    2. cs: numero di cambi di contesto al secondo

    Più grandi sono i due valori precedenti, maggiore sarà il tempo della CPU che vedrai consumato dal kernel.

    processore

    1. usr: la percentuale di tempo CPU consumata dal processo utente

    Quando il nostro valore è relativamente alto, significa che il processo utente consuma molto tempo della CPU, ma se supera il 50% di utilizzo per un lungo periodo, allora dovremmo prendere in considerazione l'ottimizzazione dell'algoritmo del programma o l'accelerazione (come PHP/Perl)

    1. sys: percentuale di tempo CPU consumata dal processo del kernel

    Quando il valore di sys è alto, significa che il kernel del sistema consuma molte risorse della CPU. Questa non è una prestazione benigna e dovremmo verificarne il motivo.

    1. wai: percentuale di tempo CPU consumata dall'attesa IO

    Quando il valore di wa è alto, significa che l'attesa IO è grave. Ciò potrebbe essere causato da un numero elevato di accessi casuali al disco oppure potrebbe trattarsi di un collo di bottiglia (operazione di blocco) nella larghezza di banda del disco.

    1. idl: percentuale di tempo in cui la CPU è in stato di inattività

    7. Riepilogo

    Per quanto riguarda i comandi di cui sopra, alcuni di essi vengono forniti con il sistema Linux e puoi eseguirli direttamente. Alcuni sono comandi di terze parti, ma la maggior parte di essi può essere installata direttamente tramite Yum install xxx o apt-get intall xxx per installare . Sebbene questi comandi siano piccoli, saranno particolarmente utili quando si verificano problemi sui nostri server.

    Per risolvere i problemi del server, generalmente dobbiamo combinare più indicatori per un'analisi e un giudizio completi. Ad esempio, se sospetti che ci sia un problema con la lettura e scrittura IO dell'host VPS, puoi utilizzare iotop per verificare la velocità di lettura e scrittura in tempo reale e utilizzare il comando top per verificare quali processi occupano la CPU e memoria. In questo modo è possibile ottenere il risultato corretto combinando più dati.

    lascia un commento