Newsgroup: it.comp.os.linux.sys
Titolo: apache al 550% di CPU

Accade una cosa strana su una macchina.
C'è apache in worker (Apache/2.2.19 (Unix) mod_ssl/2.2.19 OpenSSL/0.9.8g DAV/2 mod_fastcgi/mod_fastcgi-SNAP-0910052141)+php-fpm.
 
Ho decine di server configurati in maniera identica senza alcun problema (e load estremamente basso) mentre solo su questa macchina, stando al top, almeno un processo di apache è perennemente in testa con oltre 500% di CPU.
 
Il processo in questione è il padre dal quale vengono forkati i worker.
Non credo sia normale, e non ho idea di cosa possa portare apache ad avere un comportamento del genere. I log non indicano nulla, zero totale.
Ho pensato fosse un problema di processi perennemente forkati, ma non è così:
 
 
   24 requests currently being processed, 26 idle workers
 
................................................................
_CWCC_KCK__CK__C_C__K____K__K____K_KCCWK_WK_____KK..............
................................................................
................................................................
................................................................
................................................................
................................................................
................................................................
................................................................
................................................................
................................................................
................................................................
 
eppure apache è sempre li, in testa a tutto:
 
# top -b1 | head
top - 17:17:45 up 7 min,  1 user,  load average: 3.62, 3.70, 1.87
Tasks: 628 total,   3 running, 625 sleeping,   0 stopped,   0 zombie
Cpu(s):  7.1%us, 27.3%sy,  0.0%ni, 58.3%id,  3.9%wa,  0.0%hi,  0.0%si,  3.3%st
Mem:   5628356k total,  2087608k used,  3540748k free,   104884k buffers
Swap:  4192924k total,        0k used,  4192924k free,   622744k cached
 
  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                                                                                                                                           
 7893 apache    20   0  462m  29m 1940 S  439  0.5   0:13.52 httpd                                                                                                                                                                                                             
 7505 xxxxxx    20   0  174m  81m  61m S   51  1.5   0:01.78 php-fpm                                                                                                                                                                                                           
 7847 xxxxxy    20   0  164m  52m  41m R   37  1.0   0:01.96 php-fpm                                   
 
 
In questo caso il load è accettabile, ma fino a poco fa ho avuto oltre 40

Ho decine di server configurati in maniera identica senza alcun problema (e load estremamente basso) mentre solo su questa macchina, stando al top, almeno un processo di apache è perennemente in testa con oltre 500% di CPU.
 
Lo hai riavviato per questo? Se no, prova ad aspettare un po'.
 
Leonardo
 
-- 
What would'st thou do, my squire so gay, that rides beside my reine
Were ye Glenallan's Earl this tide, and I were Roland Cheyne?
To turn the rein were sin and shame, to fight were wondrous peril:
What would ye do now, Roland Cheyne, were ye Glenallan's Earl?

 Lo hai riavviato per questo? Se no, prova ad aspettare un po'.
 
Si, ho provato il metodo Windows, ma non ha funzionato.
 
Però, ora ho aggiornato alla 2.2.23 ed il load è passato da >10 a 0.22
O non sta funzionando qualcosa, o la precedente versione (2.2.19) aveva qualche bug.

 Lo hai riavviato per questo?
 
Scusa ma te come facevi a sapere che ho riavviato il server?


top - 17:17:45 up 7 min,  1 user,  load average: 3.62, 3.70, 1.87
 
Uptime 7 minuti, elementare Watson! 
 
:D

top - 17:17:45 up 7 min,  1 user,  load average: 3.62, 3.70, 1.87
                ^^^^^^^^


 Uptime 7 minuti, elementare Watson! 
 
ROTFL.
Mi ero dimenticato di aver postato quella riga.

                 ^^^^^^^^
 
Si, lascia perdere, mi ero dimenticato di aver postato il top.
 
Comunque sia, scherzavo, il problema non era la versione di apache.
Sembrava tutto ok perchè mi erano saltati i virtualhost. Ora li ho ripristinati ed apache è tornato li in cima

On Thu, 27 Sep 2012 09:26:23 -0700 (PDT), 
gandalf.co...@gmail.com
 
wrote:

Be', potresti provare a disattivare un attimo la prima meta'. Poi la riattivi
e disattivi la seconda meta'.
 
I casi sono:
 
(A) carico a 500, (B) carico a 500: sfiga, piantiamola qua, pensiamo qualcos'
altro e via.
 
(A) carico a 500, (B) normale - oppure viceversa: si ripete dimezzando quell'
insieme dove c'e' il carico a 500, sperando che ci sia, e di trovarlo, quell'
unico virtualhost dove c'e' qualcosa di anomalo.
 
Poi bisognera' capire, in caso, cosa sia 'sto qualcosa.


 e disattivi la seconda meta'.
 
Ho omesso di dare un particolare (che reputo poco influente): son passato da fcgi a php-fpm con fastcgi. Prima di questo cambio, il load era buono e non vi erano istanze di apache con CPU oltre il 300%.
 
Ho fatto il cambio e si è presentato il problema. Considerato che il problema non mi pare sia inerente php (nessuna istanza php-fpm sembra pesante) credo sia dovuto ad apache, ed i virtualhost son sempre gli stessi.

Ho fatto il cambio e si è presentato il problema. Considerato che il problema non mi pare sia inerente php (nessuna istanza php-fpm sembra pesante) credo sia dovuto ad apache, ed i virtualhost son sempre gli stessi.
 
Gia'. E se php-fpm fosse pensato per i virtualhost, magari non ci sarebbero
neanche problemi... :-)


 neanche problemi... :-)
 
Che stai dicendo? fpm è stato progettato *apposta* per situazioni di questo tipo ed ambienti multihost.

 Però, ora ho aggiornato alla 2.2.23 ed il load è passato da >10 a 0.22
 
Ho ricompilato fastcgi (stessa versione che avevo prima), il procetto httpd in cima al top con il 500% di CPU è scomparso. Apache è su da circa 10 minuti ed il load è attorno a 1.50, più che accettabile e nella norma per questo orario.
 
Speriamo non impazzisca di nuovo perchè ho esaurito le idee.

Che stai dicendo? fpm è stato progettato *apposta* per situazioni di questo tipo ed ambienti multihost.
 
Be', e' stata una conclusione forse affrettata a cui sono giunto leggendo
questa frase
 
	It was not designed with virtual hosting in mind (large amounts
	of pools) however it can be adapted for any usage model.
 
su 
http://php-fpm.org/
 .


 	of pools) however it can be adapted for any usage model.
 
Tra la versione "patch" e quella integrata in PHP ci sono alcune differente (ad esempio, al configurazione).
 
Non so cosa intendano loro con "large amounts of pools" ma io ne ho una media di circa 1200 su 15-20 di server. (1200 a server, non 1200/15). Ma non è questo il caso del server attuale.
Funziona in maniera quasi perfetta. Ogni tanto si incastra e va riavviato, ma ammetto che non ho ne approfondito, ne verificato un eventuale problema dato da una configurazione estremamente restrittiva del process manager, per me si incastra quando un pool riceve troppe richieste rispetto ai suoi thread.
 
Detto ciò, se non fosse progettato per i virtualhost, che te ne fai della possibilità di eseguire interpreti multipli con utenti multipli?
Solitamente si associa un pool per ciascun vhost ognuno dei quali con il proprio utente. Se fosse mono-vhost non potresti cambiare l'utente e, IMHO, sarebbe più comodo usare php-cgi tradizionale e spawn-fcgi, ad esempio. (1 riga di configurazione). Non te ne faresti (quasi) niente nemmeno degli include della configurazione (che infatti non erano presenti nella versione 'patch' ma aggiunti dagli sviluppatori php quando han fatto il merge) se devi gestire pochi pool