Monitoraggio della media del carico

La "media di carico" su una macchina * nix è la "lunghezza media della coda di esecuzione" o, in altre parole, il numero medio di processi che stanno facendo qualcosa (o in attesa di fare qualcosa). Mentre il concetto è abbastanza semplice da capire, la risoluzione dei problemi può essere less diretta.

Ecco le statistiche su un server su cui ho lavorato oggi che mi ha fatto chiedere il modo migliore per risolvere questo tipo di cose. Ecco le statistiche:

  • 1GB di RAM libera, 0 utilizzo dello spazio di swap
  • Tempi di CPU circa 20% utente, 30% attesa, 50% inattivo (secondo la parte superiore)
  • Circa 2-3 processi nello stato "R" o "D" alla volta (testato con ps | grep)
  • I registri del server esenti da eventuali messaggi di errore che indicano problemi hardware
  • Carica la media di circa 25.0 (per tutte le 3 medie)
  • Server visibilmente non risponde agli utenti

Ho finalmente "risolto" il problema riavviando MySQLd … che non ha molto senso, perché secondo il command "show process list" di mysql, il server era teoricamente inattivo.

Quali altri strumenti / metriche dovrei usare per aiutare a diagnosticare questo problema ed eventualmente determinare ciò che stava causando il carico del server così elevato?

  • Prova VPN dalla stessa networking che voglio fare VPN
  • Risorse su Java per Sys Admins?
  • Come diagnosticare un block durante la creazione di una nuova cartella in explorer.exe
  • Richieste NetBios Name Service
  • Come risolvere i problemi wireless?
  • Risoluzione dei problemi relativi alla networking senza fili ... where iniziare?
  • Il modo migliore per risolvere il problema non apache apache?
  • Perché il mio secondo ip da traceroute non risponde più al ping?
  • 5 Solutions collect form web for “Monitoraggio della media del carico”

    Sembra che il tuo server sia vincolato da IO – quindi i processi sono stati in stato D

    Utilizza iostat per vedere che cosa è il carico sui dischi.

    Se MySQL sta causando un sacco di dischetti, allora consideri di mettere i tuoi dati MySQL su un disco fisico completamente separato. Se è ancora lento e fa parte di una configuration master-slave, metta anche i registri di replica su un disco separato.

    Si noti che una partizione o un disco logico non è sufficiente – i tempi di ricerca del capo sono generalmente il fattore limitante e non i tassi di trasferimento dati.

    Avendo una media di carico di 25 e solo 2-3 processi che richiedono un suono della CPU un po 'strano. Un carico di 25 significa che vi sono costantemente 25 processi nel sistema che sono in stato Running (R) o Uninteruptable (D). Alcuni commenti notano che i thread non visualizzati in ps aux sono contati come un process attivo nella coda di esecuzione. Puoi vedere Thread con ps axms. Dipende dal sistema utilizzato come vengono contati esattamente nel carico.

    Ma ciò che è veramente importnte sapere. Il carico non ha assolutamente niente a che fare con l'utilizzo della CPU. Se ognuno di questi processi utilizza solo l'1% di CPU e quindi blocca si ha anche un carico medio di 25.

    Quindi la mia ipotesi è che al momento il tuo carico spinge fino a 25 hai troppi processi che necessitano di io e non ottenerlo. Così bloccano e stanno aspettando l'accesso a scrittura o l'accesso. Tutti sbarcano nella coda effettiva di esecuzione e il tuo carico lo spinge in alto.

    Se hai solo 2-3 processi attivi, guardare i thread. Il tuo sistema può raggiungere solo una media di carico di 25 se i processi e / oi thread sono nella sum 25 in un determinato periodo di tempo.

    Se questo è costantemente hai un problema. Se questo è solo una o due volte al giorno, guarda i cronjobs costosi di IO e modifica l'ora di esecuzione.

    Un altro problema può essere anche uno script o un programma che inizia 25 thread o processi in un determinato momento e questi processi o thread si bloccano a vicenda. Suppongo che l'utilizzo della CPU in un dato momento sia molto elevato e il sistema non soddisfa tutte le richieste richieste in questo momento.

    Se hai un kernel> 2.6.20 Suggerisco iotop sopra vmstat. iotop mostra l'IO cureente del sistema in una vista in tempo reale come la vista. Forse questo ti aiuterà.

    Un altro grande strumento per mostrare l'utilizzo e processi di CPU è htop. Mostra l'utilizzo della CPU di each CPU come un piccolo grafico, tutti e tre i carichi + barra grafica dello spazio di memory e di swap attualmente utilizzati.

    Ritornando a questo 6 anni più tardi, ho capito che qui non è una risposta utile. Ecco di gran lunga il modo più semplice per vedere cosa contribuisce alla tua media di carico su Linux:

     # View processes and threads affecting load average ps auxH | grep -v " S" 

    Il motivo per cui è ansible get una media di carico di 25 con soli tre processi in esecuzione è perché each thread si riferisce individualmente alla media di carico. L'opzione H per ps visualizza i thread come se fossero processi.

    Non hai esaurito lo spazio, vero? Non si cita nessun problema hardware , un sacco di ram gratuito, ecc. Non c'è più spazio libero (forse in / var?) O il tuo db mysql viene montato su un drive remoto e ci sono problemi di networking.

    In situazioni come questo mi piace avere Munin , o simile, monitorare il server in questione. In questo modo si ottiene una storia, presentata in forma di grafico, che potrebbe benissimo dare buoni suggerimenti in quale zona inizialmente il carico iniziato a manifestarsi. Inoltre, un'installazione predefinita di Munin viene fornito con un buon set di test preperdi.

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.