GNU/Linux >> Linux Esercitazione >  >> Linux

Risoluzione dei problemi di Linux 101:prestazioni del sistema

I sistemi occupati su una rete utilizzata da più utenti locali (o migliaia di utenti Web) riscontrano problemi di prestazioni durante il loro ciclo di vita. Solo i sistemi che non sono occupati sono immuni dai problemi di prestazioni che affliggono tutti noi. Questo articolo esplora i soliti sospetti per trovare e risolvere problemi di prestazioni.

Quelle che seguono sono linee guida generiche, un riassunto di base dei "punti di partenza". Ogni problema è diverso, ma man mano che acquisirai più esperienza, avrai un'idea migliore di dove e come iniziare a cercare un problema particolare. Credo che ti possano essere insegnate le basi della risoluzione dei problemi, ma non ti possono essere insegnate esperienza o intuizione. Entrambi vengono con il tempo. Inoltre, nota che alcuni problemi si manifestano in modo tale che inizi su un percorso e spesso vieni portato a un altro. Questo fattore è frustrante ma normale. Ad esempio, alcuni problemi del disco possono causare un picco di utilizzo della CPU e i problemi di memoria possono mascherarsi come problemi di prestazioni del disco. Inizia prima con le cose facili e poi passa a quelle più complesse. Non complicarti la vita più del necessario. A volte è sufficiente sostituire un cavo di rete o riavviare un sistema. Semplice, ma efficace.

Annullamento delle modifiche recenti

È necessario apportare modifiche in un ambiente di produzione. Documentare tali modifiche è obbligatorio. Sarai felice di averlo fatto quando qualcosa andrà storto e lo farà. La cosa strana dell'apportare modifiche su Linux (o su qualsiasi altro sistema) è che la modifica stessa potrebbe funzionare perfettamente quando la apporti, ma in un giorno o due le prestazioni del tuo sistema ne risentono. Prima di fare qualsiasi altra cosa, controlla la documentazione delle modifiche per vedere se sono state apportate modifiche recenti al sistema. Le modifiche includono patch software, aggiornamenti di qualsiasi tipo, sostituzioni o aggiornamenti hardware, aggiornamenti dei driver, aggiornamenti del firmware, push del codice, nuove installazioni di software e modifiche alla configurazione.

Quando controlli la documentazione delle modifiche, confronta le modifiche recenti con i problemi che stai riscontrando. Dopo aver eseguito i consueti controlli di sistema, è necessario annullare le modifiche una alla volta per vedere quale può essere ricondotta alla causa principale delle prestazioni. A volte, scoprirai che alcuni "cluster" di aggiornamento non sono compatibili o devono essere installati o applicati in un ordine particolare. Controlla sempre la documentazione del tuo fornitore per vedere se questo è il caso.

Aggiorna, aggiorna, aggiorna

Puoi evitare problemi di prestazioni associati a bug software e hardware mantenendo tutto aggiornato, soprattutto quando si tratta di software lato server (piuttosto che lato client, come un browser web). Anche il lato client dovrebbe essere aggiornato, ovviamente, ma questa è una discussione diversa.

Sì, è un lavoro a tempo pieno per mantenere tutti i tuoi sistemi aggiornati. C'è sempre qualcosa che deve essere aggiornato su un sistema:BIOS, firmware, driver, sistema operativo, applicazioni, agenti, software di sicurezza, database, software di backup e così via. Questa attività non finisce mai. Decidi la frequenza con cui devi aggiornare o rispettare la politica di applicazione delle patch della tua organizzazione per pianificare, programmare e applicare tali aggiornamenti. In uno dei miei lavori, abbiamo rattoppato una volta alla settimana. Farlo è stato un dolore. Ci ha richiesto di fare una notte intera una volta alla settimana, cosa che invecchia velocemente. Non c'è modo di evitare di farlo regolarmente, però. Devi eseguire l'aggiornamento per assicurarti che i tuoi sistemi siano sicuri e dispongano delle ultime patch di stabilità.

Se i tuoi sistemi sono aggiornati e non sono disponibili aggiornamenti più recenti, in genere puoi escludere aggiornamenti e patch come causa principale dei problemi di prestazioni.

Limiti hardware e guasti

In base alla mia esperienza, tutti (programmatori, amministratori di rete, dirigenti e fornitori) vogliono incolpare l'infrastruttura per tutti i problemi di prestazioni. Tutti credono collettivamente che l'infrastruttura sia l'anello più debole ed è lì che è più probabile che si verifichino interruzioni, quindi dovrai dimostrare che non è il tuo hardware a causare il problema prima che qualcuno agisca. Sono d'accordo su un punto, ma è un po' fastidioso quando questo è il primo presupposto, piuttosto che uno che viene indagato contemporaneamente ad altre potenziali cause.

In genere ci sono quattro componenti hardware che possono non funzionare o raggiungere limitazioni che possono causare problemi:CPU, rete, memoria e disco. Ci sono anche altri componenti che possono guastarsi, come gli alimentatori, ma questi "quattro grandi" sono i colpevoli più comuni e i primi posti in cui dovresti cercare quando hai un problema.

CPU

Al giorno d'oggi la maggior parte dei sistemi server ha banchi di CPU multi-core e multi-processore. Se hai un problema con la CPU, potrebbe essere causato da un difetto nella CPU stessa. Trovare la CPU specifica che ti sta causando un problema va oltre lo scopo di questo articolo. Se sospetti un effettivo guasto o anomalia della CPU, chiama il fornitore del sistema per un consiglio. È probabile che dispongano di routine diagnostiche eseguibili che identificheranno la CPU problematica. Oltre a ciò, invieranno un tecnico per sostituire una CPU o tutte.

Quindi, a parte un guasto alla CPU, cosa cerchi quando sospetti un problema con la CPU? Controlla top per vedere se qualche processo sta sovraccaricando le tue CPU. Per ordinare top per la CPU, esegui top e poi digita P (Maiusc+P). Guarda i processi che bruciano i cicli della tua CPU. Quelli in cima all'elenco sono relativi al sistema o alle applicazioni? Se sono processi di sistema, controlla il tuo tempo di attività. Il tempo di attività non dovrebbe essere estremamente elevato a causa del riavvio regolare.

Se trovi un'applicazione particolare che utilizza una quantità anomala di cicli della CPU, riavvia l'applicazione per vedere se il problema persiste. Se il processo è correlato al sistema, prova a riavviarlo se possibile. In caso contrario, riavviare il sistema. Sì, riavvia il sistema.

Bonus risoluzione problemi (riavvio)

Sì, è necessario riavviare almeno una volta al mese. So che c'è una raffica di discussioni su questa pratica, ma per escludere molti problemi, un buon riavvio risolve molti problemi e ti aiuta a diagnosticare i problemi hardware con il minimo sforzo. Anche spegnere il sistema occasionalmente è una buona pratica, perché il ripristino di un sistema da un avvio a freddo può identificare molti problemi hardware che potrebbero nascondersi su un sistema in esecuzione. Potrai anche restringere il campo dei problemi se il problema delle prestazioni persiste dopo un riavvio.

Memoria

Il prossimo posto più ovvio in cui cercare durante la risoluzione dei problemi delle prestazioni è l'uso della memoria. I problemi di memoria possono manifestarsi in modi diversi che oscurano il fatto che la memoria è davvero il problema. Se scopri che nel corso di una giornata la memoria del tuo sistema viene esaurita, la prima cosa da controllare è la registrazione. So che sembra pazzesco, ma catturare i registri è quasi costato milioni di dollari a un'azienda con cui lavoravo. Ho notato nei rapporti sulle prestazioni che la memoria del nostro sistema di cluster veniva prosciugata durante il giorno. C'erano molti gigabyte di memoria disponibili, quindi questo problema non avrebbe dovuto verificarsi. Inoltre, le prestazioni sono peggiorate con il passare della giornata. Ogni notte a mezzanotte, tutto tornava. Cosa è successo a mezzanotte, chiedi? Rotazione del registro. Apparentemente, qualcuno aveva attivato il debug per i log, il che significava che decine di gigabyte al giorno venivano raccolti, sottoposti a backup e archiviati inutilmente. E stava prosciugando la nostra memoria. Una volta scoperte e corrette, le prestazioni sono tornate a pieno regime e hanno alleviato la necessità di spendere milioni di dollari in sistemi aggiuntivi per questo enorme cluster.

Dovresti anche guardare lo spazio di scambio se sospetti un problema di memoria. In questo output, il mio sistema è inattivo, quindi il risultato non è drammatico. Usa free -m comando per controllare l'utilizzo della memoria fisica e virtuale (swap):

$ free -m
              total        used        free      shared  buff/cache   available
Mem:            821         200         288          10         333         484
Swap:             0           0           0

Se stai usando molto swap, il tuo sistema potrebbe fare ciò che gli amministratori *nix chiamano "thrashing". Il thrashing, contrariamente a quello che fanno gli skateboarder, è una brutta cosa per noi. Non vuoi che il tuo sistema vada in tilt. Il thrashing può anche apparire come un problema del disco se è abbastanza grave. Se il tuo sistema è così impegnato a eseguire il paging in entrata e in uscita da influire sulle prestazioni del disco, devi agire immediatamente riavviando il processo incriminato. Ora, non fraintendermi. Swap è impostato e configurato per eseguire il paging su disco, ma quando causa un problema di prestazioni, questo problema deve essere risolto.

Molti sistemi moderni hanno così tanta memoria che lo scambio basato su disco non viene utilizzato affatto. Alcuni amministratori ritengono che sia uno spreco di spazio su disco. Per me, se configuro lo swap dipende dallo scopo del sistema e dalla quantità di RAM che ha. Le considerazioni sullo scambio sono in realtà per un altro articolo, ma dirò che il modo in cui gestisci lo scambio dipende da te. Non credo che la vecchia regola della RAM 1,5x sia più una buona formula. Pensaci. Se il tuo sistema ha 128 GB di RAM, ciò significherebbe che configuri 192 GB di RAM per lo spazio di scambio. Ridicolo. Potrei impostare 16 GB al massimo per quel sistema se avessi configurato lo swap.

In rari casi, la tua RAM può essere danneggiata o andare male. L'ho fatto succedere. Dovresti anche fare attenzione al tipo di RAM che acquisti per un sistema se stai aggiornando. Abbina quello che hai o sostituiscilo tutto se non riesci a eguagliarlo. Non mischiare velocità, cache o marchi. Inoltre, usa il tipo di RAM consigliato per il tuo sistema. L'utilizzo di RAM di marche diverse o non corrispondenti è un disastro in attesa di verificarsi.

Infine, i programmi errati possono causare problemi di memoria. I programmi basati su Java mi hanno storicamente causato il maggior dolore. Alcuni programmatori Java non programmano correttamente per la pulizia dei rifiuti o il rilascio della memoria e si verificano problemi quando i carichi sono elevati o quando vengono effettuate determinate chiamate. Comincio sempre riavviando il processo. La mia prossima opzione è controllare top per la quantità di memoria consumata dal programma. Se tutto il mio controllo e il riavvio del processo non funzionano, riavvio il sistema. Se il problema si ripresenta, andrò dal programmatore e mi lamenterò e fornirò le mie segnalazioni.

Disco

I dischi si guastano. Questa è un'affermazione forte ma vera. Anche gli SSD a un certo punto si guastano, quindi preparati al guasto del disco. Ricorda che RAID non è la stessa cosa di un backup e che i dischi e le partizioni si riempiono, il che li fa comportare con prestazioni non ottimali. Se sospetti che un disco sia il tuo killer delle prestazioni, la prima cosa da guardare è lo spazio disponibile con un rapido df comando:

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        397M     0  397M   0% /dev
tmpfs           411M     0  411M   0% /dev/shm
tmpfs           411M   11M  400M   3% /run
tmpfs           411M     0  411M   0% /sys/fs/cgroup
/dev/sda2        16G  1.8G   14G  12% /
/dev/sda1       495M  152M  344M  31% /boot
tmpfs            83M     0   83M   0% /run/user/1000

Puoi vedere sopra che non ci sono filesystem completi o quasi completi sul mio server.

Il prossimo elemento da controllare è se i tuoi filesystem sono pieni o quasi pieni. Se nessuno lo è, allora hai un disco guasto. Non riesco a simulare un errore del disco, ma alcuni sistemi server ti informano quando hanno dei dischi guasti. Ad esempio, alcuni dei miei vecchi server hanno mostrato una luce ambra anziché una luce verde quando qualcosa non andava. Presta attenzione ai tuoi indicatori hardware. Avevo anche server con un piccolo schermo LCD che mi informava di guasti ed errori. Questi strumenti sono stati utili quando il sistema operativo non mi ha segnalato che c'era un problema.

Un disco guasto ha un impatto sulle prestazioni, indipendentemente dalla configurazione. Le configurazioni RAID non garantiscono le prestazioni in caso di guasto di un disco membro. Garantiscono invece la sicurezza a causa della ridondanza. In altre parole, i tuoi dati sono intatti, ma i tuoi utenti e clienti saranno insoddisfatti a causa delle prestazioni lente. Aspettati problemi di prestazioni quando un disco membro si guasta.

Se hai un sistema lento, controlla il server fisico e tutti i suoi componenti, avvisi e messaggi. Questo passaggio è per coloro che hanno accesso ai server fisici. Così tanti amministratori di sistema hanno a che fare con sistemi remoti o ospitati e quindi non hanno questo tipo di accesso.

Rete

I problemi di rete dovuti all'hardware sono piuttosto rari, ma si verificano. Una scheda di rete rumorosa, un cavo danneggiato o uno switch o una porta dello switch guasti possono essere fonte di molta frustrazione per un amministratore di sistema. E, se aggiungi una porta dello switch o una configurazione errata della rete sull'host stesso, ora hai una ricetta per un sacco di strattoni. A volte è difficile trovare l'origine di un problema di rete perché il problema può essere locale, sullo switch o da qualche parte oltre lo switch. Devi guardare ogni livello separatamente per trovare il problema.

Controlla i tuoi altri host per il confronto. Il problema è localizzato su un singolo host, è confinato a un singolo gruppo o è a livello di sistema? Questo controllo ti aiuterà a identificare se il problema è locale, se è limitato a un singolo switch, se interessa un intero rack o una riga o se il problema è più diffuso.

Controlla le tue configurazioni di rete locale. Controlla i log delle modifiche per vedere se qualcosa è cambiato di recente. Quindi, esegui un controllo fisico della tua NIC. Le luci ti sembrano corrette? Il cavo ha un bell'aspetto e la spina non sembra danneggiata? La configurazione del filo sembra corretta? Controllare l'intera lunghezza del cavo per danni fisici, se possibile. Controllare l'interruttore fisico e il terminatore del cavo nello switch per individuare eventuali difetti fisici.

Controlla tu stesso la configurazione dello switch o chiedi a un amministratore di rete di farlo. Controllare fisicamente la posizione dello switch o fare riferimento alla documentazione per trovare la porta corretta da segnalare all'amministratore di rete. Se la configurazione sembra corretta, chiedi all'amministratore di rete di eseguire un ripristino rapido della porta. Inoltre, chiedi all'amministratore l'ultimo aggiornamento dello switch e la data dell'ultimo riavvio.

A seconda del tuo lavoro e di dove lavori, potresti non avere il controllo o la visibilità oltre il tuo passaggio. Collabora con amministratori di rete, ISP o provider di hosting per individuare ulteriormente un problema di prestazioni della rete. L'esperienza personale mi dice che, a meno che un problema di rete non sia diffuso, gli amministratori di rete vogliono la prova di ciò che hai verificato che ti ha portato a incolpare la rete. Per questo motivo, ho inserito la risoluzione dei problemi di rete all'ultimo posto nell'elenco. Non riesco a contare il numero di volte in cui ho sentito quelle parole frustranti: "Non è la rete, amico. Deve essere l'infrastruttura". E poi un segnale di linea.

Conclusione

Non ci sono scorciatoie per acquisire conoscenze sulla risoluzione dei problemi. Puoi imparare ed essere preparato, ma sfortunatamente l'esperienza è il miglior insegnante perché devi sperimentare dei fallimenti prima di avere un'idea reale della risoluzione dei problemi in trincea. Anche i fallimenti simulati non ti danno la stessa esperienza di un vero fallimento, con utenti reali che chiedono quando le cose saranno risolte e manager reali che ti guardano come se fosse colpa tua se l'azienda sta perdendo denaro e infastiditi dal fatto che la tua tastiera non lo sia senza fare rumore.

La risoluzione dei problemi non è la parte divertente dell'essere un amministratore di sistema, ma è una parte necessaria. In effetti, non sono sicuro che ci siano parti divertenti e sono tutte necessarie. Essere un amministratore di sistema è stressante e la risoluzione dei problemi è una parte importante di questo stress. Ti ho dato dei suggerimenti nel tentativo di ridurre lo stress, ma sta ancora a te acquisire esperienza e sicurezza nel metterli in pratica.


Linux
  1. Migliora le prestazioni del sistema Linux con noatime

  2. Autorizzazioni Linux 101

  3. Quando si tratta di risoluzione dei problemi del sistema Linux, trova è il mio migliore amico

  4. 5 Comandi per la risoluzione dei problemi di rete Linux

  5. Risoluzione dei problemi di Linux:configurazione di un listener TCP con ncat

Comando Fsck in Linux

Linux è un sistema operativo o un kernel?

Suggerimenti utili per migliorare le prestazioni del sistema Linux

I miei comandi per la risoluzione dei problemi di rete Linux

Documentare il tempo di attività del sistema in Linux

Risolvi i problemi e monitora le prestazioni del sistema Linux con nmon