Apache utilizza il 100% di CPU. Il comando "ps" può dirmi cosa sta facendo?


8

Ho un server Linux SLES 10 e alcune volte è al massimo da Apache al 100% della CPU.

Con ps axposso vedere che Apache ha generato ~ 50 processi Apache.

Ad esempio il pscomando può dirmi cosa sta facendo ciascuno di questi processi Apache?

O forse qualche altro metodo in modo che io possa vedere quali pagine Web che innescano il problema?

Risposte:


14

Il mio file /etc/httpd/conf/httpd.conf ha questa sezione:

# Allow server status reports generated by mod_status,
# with the URL of http://servername/server-status
# Change the ".example.com" to match your domain to enable.
#
<Location /server-status>
    SetHandler server-status
    Order deny,allow
    Deny from all
    Allow from .example.com
    Allow from 127. 192.168.1.
</Location>

Quindi, se vado su http://192.168.1.1/server-status , ottengo una pagina che mi dice:

  1. versione del server
  2. uptime httpd
  3. utilizzo corrente della CPU
  4. di richieste in elaborazione e numero di lavoratori inattivi

  5. una griglia di ciò che ogni processo sta facendo
  6. richieste recenti

    Stato del server Apache per 192.168.3.1

    Versione server: Apache / 2.2.3 (Red Hat)
    Server costruito: 14 luglio 2009 06:04:04

    Ora corrente: sabato 17 luglio 2010 10:20:31
    Ora riavvio CDT : sabato 17 luglio 2010 10:13:12
    Generazione server padre CDT : 0 Tempo di attività
    server: 7 minuti 19 secondi
    Accesso totale: 51 - Totale Traffico: 156 kB
    Utilizzo CPU: u0 s0 cu0 cs0
    .116 richieste / sec - 363 B / secondo - 3132 B / richiesta
    1 richieste attualmente in elaborazione, 7 lavoratori inattivi

    __W _____................................................. .......
    ........................................... .....................
    ............................. ...................................
    ............... .................................................

    Chiave del tabellone segnapunti:
    "_" In attesa di connessione, "S" Avvio, "R" Richiesta di lettura,
    "W" Invio risposta, "K" Keepalive (lettura), "D" Ricerca DNS,
    "C" Chiusura connessione, "L "Registrazione", G "Fine con grazia,
    " I "Pulizia inattiva del lavoratore". " Slot aperto senza processo corrente

    Srv PID Acc M CPU SS Req Conn Client Slot bambino Richiesta VHost
    0-0 20715 0/2/2 _ 0,00 418 0 0,0 0,01 0,01
    192,168,3,97 dtOttieni stato / server HTTP / 1,1 1-0 20716 0/49/49 _ 0,00 128 0 0,0 0,15 0,15
    192,168,3,97 detti GET / stato server HTTP / 1,1 2-0 20717 0/0/0 W 0,00 0 520222374 0,0 0,00 0,00 192,168,3,97 detti GET / stato server HTTP / 1,1


Potrebbe essere necessario impostare ExtendedStatus ONper visualizzare ogni richiesta
TonyUser,

3

stracepuò dirti cosa sta facendo un processo specifico a livello di chiamate di sistema, ma non ti darà una "visione di 50 piedi" di ciò che sta accadendo. Dovrai mettere insieme le chiamate di sistema che sta usando per capirlo.


2

Se si dispone di un sito Web con un back-end del database, è possibile cercare nel DBMS quali comandi sono attualmente in esecuzione. Forse questo potrebbe aiutarti a restringere la posizione in cui nel tuo codice del sito web viene generato il carico.

Altrimenti potresti aumentare il livello di log del demone httpd. Quindi hai maggiori informazioni nei registri.


1

C'è anche ltrace, che funziona come uno strace ma con chiamate in libreria.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.