Autore Topic: [RISOLTO] Netstat e file associati  (Letto 9435 volte)

Offline wenfi

  • Jr. Member
  • **
  • Post: 32
    • Mostra profilo
[RISOLTO] Netstat e file associati
« il: 20 Dicembre 2010, 18:25:29 »
Salve,
ho sul mio server alcuni siti che consumano tanta cpu attraverso script php.
dato un PID del webserver, come faccio a risalire al singolo file che sta consumando tanta cpu?
grazie,
ciao
« Ultima modifica: 21 Dicembre 2010, 12:28:57 da wenfi »

Offline dankan77

  • Moderator
  • Hero Member
  • *****
  • Post: 1365
    • Mostra profilo
    • E-mail
Re: Netstat e file associati
« Risposta #1 il: 21 Dicembre 2010, 09:06:46 »
Ciao, la domanda non è tanto chiara. I file non consumano tanta CPU, semmai introducono tanto I/O wait.
Ad ogni modo prova con :

lsof -p  "pid"


Ciao

Offline wenfi

  • Jr. Member
  • **
  • Post: 32
    • Mostra profilo
Re: Netstat e file associati
« Risposta #2 il: 21 Dicembre 2010, 10:36:41 »
grazie per il comando.
se per esempio uno script php fa pesanti operazioni tra array di miliardi di elementi è sempre I/O wait?

Offline dankan77

  • Moderator
  • Hero Member
  • *****
  • Post: 1365
    • Mostra profilo
    • E-mail
Re: [RISOLTO] Netstat e file associati
« Risposta #3 il: 21 Dicembre 2010, 12:53:41 »
Ciao le risorse di un sistema sono 3 : CPU, Memoria, I/O.
Solo i processi hanno accesso a queste 3 risorse con le schedulazioni che il S.O. sottostante impone.
Se un processo è in pending a causa dell'accesso ad una risorsa di I/O al momento occupata da un altro processo, il tempo che impiega ad aspettare si chiama I/O Wait.


Ciao

Offline wenfi

  • Jr. Member
  • **
  • Post: 32
    • Mostra profilo
Re: [RISOLTO] Netstat e file associati
« Risposta #4 il: 21 Dicembre 2010, 13:45:56 »
quello che ti volevo far notare è che quando tu parli di I/O wait intendi accesso al disco e quindi processi che devono aspettare perchè altri lo stanno utilizzando (questi nel frattempo non consumano cpu). Ciò che è bloccante nel mio caso è proprio il consumo di cpu perchè se un solo processo va al 100%, impedisce ad altri di utilizzarla, ma non necessariamente per via dell'I/O, potrebbe semplicemente effettuare un calcolo "costoso" che prende tutta la cpu.
a questo punto vorrei risalire allo script php (nel caso specifico e se possibile) che ha fatto una richiesta all'eseguibile PHP (per eseguire un pezzo di codice) che poi è il responsabile attraverso apache, dell'eccessivo consumo.
grazie,
ciao

Offline dankan77

  • Moderator
  • Hero Member
  • *****
  • Post: 1365
    • Mostra profilo
    • E-mail
Re: [RISOLTO] Netstat e file associati
« Risposta #5 il: 21 Dicembre 2010, 14:17:23 »
Ok, ritorniamo un passo indietro e cerchiamo di essere costruttivi e soprattutto di intenderci.
Partiamo da una tua affermazione:
"se per esempio uno script php fa pesanti operazioni tra array di miliardi di elementi"

l'I/O wait non viene introdotto solo dalla risorsa disco ma da qualsiasi sottoinsieme di Input Output quindi oltre alla risorsa disco anche la risorsa rete e la risorsa memoria.
Il privilegio di avere DMA lato CPU è un vantaggio, ma l'accesso alla momeria centrale può diventare un tranello nel caso in cui il tuo sistema utilizza swap disco a livello di memoria centrale.
Quindi una prima domanda è : Il tuo sistema utilizza swap?
Per quanto riguarda invece l'I/O lato rete posso indicarti che il suo abuso è una delle prime tecniche utilizzate per DOS (Denial Of Service), in pratica si inviano tante richieste di syn che ovviamente alloca risorse (CPU,Memoria) finchè il sistema server non sià più disponibile. Hai notato traffico anomalo lato rete?
Premesso questo ritorniamo al codice e cerchiamo di capire due cose :
Che tipo di utenza hai?
Quanti accessi paralleli?

Premesso che allo stato attuale il codice PHP fà ben poco inquanto deve essere l'ambiente Middleware ad essere ottimizzato per il multithread ed il multicore ti invito a leggere alcune considerazioni riportate qui da persone sicuramente più esperte di me visto che purtroppo non ho grandi competenze lato php

http://forum.html.it/forum/showthread/t-1219940.html

Spero che la mia considerazione(per un analisi ci vogliono i dati :-) ) ti possa essere utile.

Ciao

Offline wenfi

  • Jr. Member
  • **
  • Post: 32
    • Mostra profilo
Re: [RISOLTO] Netstat e file associati
« Risposta #6 il: 21 Dicembre 2010, 15:42:48 »
nessuna swap, nessuna saturazione, come ti ho già detto è apache a consumare cpu, dovuta a script che ne fanno uso eccessivo (php). da questa considerazione partiva la mia affermazione che l'I/O non c'entrava in questo caso.
nel caso di un multicore, semplicemente più processi apache vanno al 100%, uno per ogni core.
un attacco dos...apre pagine del web server o semplicemente manda richieste syn?
ciao

Offline dankan77

  • Moderator
  • Hero Member
  • *****
  • Post: 1365
    • Mostra profilo
    • E-mail
Re: [RISOLTO] Netstat e file associati
« Risposta #7 il: 21 Dicembre 2010, 16:05:43 »
Come regola un attacco DOS sfrutta il SYN ma esiste anche un metodo più semplice per fare DOS.
E cioè usare ab?

ab - Apache HTTP server benchmarking tool

lo trovi nel pacchetto httpd-tools

P.S.
Usi un sistema di monitoraggio?

Ciao

Offline wenfi

  • Jr. Member
  • **
  • Post: 32
    • Mostra profilo
Re: [RISOLTO] Netstat e file associati
« Risposta #8 il: 21 Dicembre 2010, 16:13:58 »
no nessun monitoraggio.
ma scusami non capisco perchè non ti piace il concetto che uno script php possa saturare una cpu,quindi perchè cercare cause altrove?

ciao

Offline dankan77

  • Moderator
  • Hero Member
  • *****
  • Post: 1365
    • Mostra profilo
    • E-mail
Re: [RISOLTO] Netstat e file associati
« Risposta #9 il: 21 Dicembre 2010, 16:21:51 »
Guarda di software scritto male nei vari linguaggi conosciuti ne esistono a Tera Byte, quindi il concetto mi è ben chiaro.
Di solito prima di arrivare a saturare un server c'è il monitoraggio e ci sono le stime/previsioni di crescita, quello che in ambito enterprise viene chiamato Capacity Plan.
Volevo suggerirti un sistema di monitoraggio tipo munin, ma credo che tu sia troppo avanti per accettare consigli modesti.

Ciao

Offline wenfi

  • Jr. Member
  • **
  • Post: 32
    • Mostra profilo
Re: [RISOLTO] Netstat e file associati
« Risposta #10 il: 21 Dicembre 2010, 16:52:44 »
assolutamente, anzi se ho scritto nel forum è proprio perchè volevo sentire altri pareri.
però visto che andavi a proporre altre strade volevo solo riportarti nel problema principale.
cmq munin ho visto che è molto completo come monitor. Io sto usando mrtg per il solo monitoring di rete e per quanto riguarda la cpu il classico "top". però forse nemmeno munin mi aiuta a trovare per esempio, dove risieda lo script che (in quel frangente) fa intensivo uso di cpu.
ti viene nulla in mente?
forse lsof dovrebbe andare bene.

grazie,
ciao