Newsgroup: it.comp.os.linux.software
Titolo: Apache, saturazione RAM in seguito a creazione anomala processi httpd

Salve a tutti, ho deciso di utilizzare Fedora per hostare il mio sito
web (basato su osCommerce, un CMS), ma sfortunatamente sono incappato
in un problema che non sono ancora riuscito a identificare bene e
tantomeno risolvere:
Premetto che il sito è hostato su un VPS con Fedora Core 2 (ma con
kernel 2.6.8), Apache/2.0.51, PHP/4.4.2 e e MySQL/4.1.18 con 2400MB di
RAM (virtuali gestita da Virtuozzo) e priorita CPU 5.00x (il massimo
possibile).
Il mio sito viene fortunatamente visitato da un grande numero di
persone contemporaneamente (50 o anche più).
Di norma il server apache si comporta più che egregiamente.
Capita però che di punto in bianco ci sia un picco molto sospetto di
connessioni attive con un corrispondente picco nei processi di apache e
il relativo consumo della memoria RAM.
Di seguito qualche immagine creata con  MRTG che può aiutare a capire
il problema.
Processi Attivi di Apache
http://leinardi.altervista.org/JD/fedora/procs_httpd-day.png
Connessioni Attive
http://leinardi.altervista.org/JD/fedora/tcpopen-day.png
kmemsize/privvmpages
http://leinardi.altervista.org/JD/fedora/kmem_privvm-day.png
Processi Attivi
http://leinardi.altervista.org/JD/fedora/procs-day.png
(se le immagini non si vedono cliccando, copiate e incollate
direttamente nella barra degli indirizzi)
Si vede chiaramente che i processi di apache passano da una media di 5
ad un picco di 80 (!!!) - idem per le connessioni - e vanno a riempire
quasi totalmente la RAM (kmemsize sul VPS).
In principio ho sospettato fosse un problema esclusivamente dovuto ad
apache, magari una cattiva configurazione.
Poi ho notato che la creazione folle di processi avviene in
contemporanea alla creazione di quasi altrettante connessioni attive...
Il problema lo sto monitorando da diversi giorni, e non ho trovato
nulla...
Vorrei sottolineare che le ultime 24 ore sono state particolarmente
"fortunate", nei giorni scorsi questi picchi erano più frequenti.
Nell'error_log di apache non compare nulla all'infuori di un avviso di
avvenuto raggiungimento dei MaxClients:
[error] server reached MaxClients setting, consider raising the
MaxClients setting
Ma incrementare ulteriormente il MaxClients equivale a rischiare la
completa saturazione della RAM e relativa impossibilità ad effettuare
ulteriori fork()...
Queste sono le impostazioni relative alla prefork:
<IfModule prefork.c>
StartServers       2
MinSpareServers    2
MaxSpareServers    5
MaxClients        100
MaxRequestsPerChild  4000
</IfModule>
Purtroppo la mia esperienza su apache è ancora modesta, per questo
sono venuto qui in cerca di qualche buon consuglio...
Se può tornare utile qualche altro parametro dell'httpd.conf chiedete
pure e lo posterò immediatamente...
Mi scuso per l'eccessiva lunghezza e ringrazio chi è arrivato a
leggere fino a qui  :-D

 il relativo consumo della memoria RAM.
Secondo me è semplice: devi alzare i maxclients. Ma non puoi.
Perchè ?
il problema base è virtuozzo che per la mia esperienza (ce l'ha un mio
amico, con molta ram e cpu a 5) fa veramente _CAGARE_ per scopi
professionali.
Tu pensa ad una macchina con sopra (secondo i miei calcoli) circa 200
virtual server. La ram è una, il disco uno, sharato in NAS, oltretutto
(così mi pare di aver letto).
Quando c'è un picco di utilizzo di alcuni VS su un VP, tu puoi avere quanta
priorità vuoi ma i tuoi processi saranno LENTI a "evolvere".
Supponi di avere 5 connessioni al secondo che in 0.5 secondi vengono
concluse.
Se per qualche secondo, metti 10, il tuo server host rallenta, queste
connessioni ci metteranno supponiamo un secondo.
Nel frattempo ne sono arrivate altre ed ecco che il problema si moltiplica e
amplifica.
Se leggi il forum di NGI, che usa virtuozzo, ti accorgerai che sono molti a
lamentarsi di improvvisi rallentamenti o scarsa reponsività della macchina.
In quegli istanti, se hai un numero decente di visite, il tuo VS muore.
Semplice, no? 
Allora tu dirai: come posso approfondire?
Non puoi, poichè non sai cosa sta realmente facendo il server.
Hai solo visibilità sulla "tua parte". 
Ergo, TF [leggasi TANGO FOXTROT] (ti fotti). 
Cambia filosofia e prenditi un server completo, possibilmente non su aruba
perchè prima o poi lo classificheranno come hoster basato su spammatori e
ancor meglio non red hat (magari debian).
Max
-- 
A: Because we read from top to bottom, left to right.
Q: Why should i start my reply below the quoted text?

Woow finalmente una risposta come si deve :) (anche se non è
esattamente quello che speravo...)
Il forum di NGI lo conosco bene, dato che ho il VPS li :°°(
Eh, a questo punto dovrò rassegnarmi e trovare un buon equilibrio tra
MaxClients e RAM, e tenermelo così per il prossimo anno, poi quando
scadrà il contratto magari farò un pensierino per un dedicato...
Grazie 1000 Max...