Newsgroup: it.comp.os.linux.sys
Titolo: Ho bisogno di un brainstorm

Situazione:
Server web con Wordpress in cui "impazzisce" Apache, non si servono più 
pagine durante un po' di minuti, poi ritorna a funzionare.
Configurazione:
- Debian Lenny con pacchetti standard (ok, ho PHP al 5.2.11)
- Mysql in locale
- è una macchina virtuale VMWare dentro un server fisico ben carrozzato. Ha 
750MB di RAM assegnata.
Cosa succede in concreto? Semplicemente Apache comincia a generare un sacco 
di processi, consume memoria fino a toccare swap e comincia ad andare 
lentissimo. Alle volte arriva ad attivarsi l'OOM.
Ho praticamente tutto monitorizzato con Zabbix e non c'è nessuna variabile 
con valori strani prima del botto. Semplicemente di punto in bianco, in 
mezzo a un trend normalissimo, i processi di Apache schizzano alle stelle, 
la RAM si prosciuga e muore tutto.
La configurazione del prefork è la seguente
<IfModule mpm_prefork_module>
    StartServers          5
    MinSpareServers       5
    MaxSpareServers      10
    MaxClients          30
    MaxRequestsPerChild   100
    ServerLimit 51
</IfModule>
che sono limiti ridicoli per evitare, appunto, che venga consumata troppa 
memoria. Il limite di memoria in PHP è a 32MB. Il sito è a basso traffico e 
scarto attacchi DoS... almeno forensics non logga nulla di strano 
(praticamente tutte le connessioni si chiudono). 
I "blackout" non succedono a intervalli regolari nè sembra esserci uno 
schema ricorrente.
Qualche idea?
Sparate pure anche se sembrano ovvietà, che al massimo le scarto :)
-- 
Vide

 di processi,
processi che fanno che? perche' in genere se apache genera un altro
'child' e' perche' ha bisogno di gestire piu' connessioni, non perche'
gli gira cosi'.
Davide

 
Qualche post fa si discuteva sulla messa in sicurezza di Apache + PHP..
Hai provato a farlo girare come Fast CGI ?
Quando succede hai dato un occhiata al traffico con un iftop o iptraf ?
Il Guest è Bridged o Nat ? Nel caso fosse NAT, se ti fanno un Dos 
Synflood Vmware Serve lo gestisce malissimo e ti spara al max CPU e poi 
Ram ..ma dubito sia questo.
-- Yena --

 gli gira cosi'.
Il server status del check antecedente al buuuuum da 2-3 URL di Wordpress  
in processo, con durata massima 3-4 secondi. La cosa strana è che l'ultimo 
check ce l'ho circa 15 minuti prima di quando mi arrivi la segnalazione di 
Zabbix che il load è alto. Ma questo suppongo dipenda dal tempo che ci mette 
a accumulare abbstanza processi apache in stallo perchè il load faccia 
saltare l'allarme. Il punto è perchè si ciuccia pure il server-status?
-- 
Vide

 Ram ..ma dubito sia questo.
Bridged.
-- 
Vide

 schema ricorrente.
L'utente X chiede quella pagina specifica che fa scattare questo blackout.
Nei log di accesso alle pagine risalta qualcosa di particolare poco prima del boom ?
Ciao
Rizio
-- 
Si dice che essere liberi significa non avere nulla da perdere...sembra facile a 
prima vista...ma la verità è che non avere nulla da perdere significa essere 
pronti a rischiare tutto ciò che si possiede.

 del boom ?
No.. l'unica cosa davvero strana è che ho, per esempio, il log dei vari 
server-status che eseguo via Zabbix e che invece, come detto nell'altro 
post, non ottengono risultati. E danno tutti un 200.
-- 
Vide

 
Mi è successa una cosa simile un mesetto fa ..
non potevo mettere fast cgi e non sono riuscito a capire cosa fosse..
Ho montato una cache per PHP ( eAccelerator ) e ho risolto..
nel mio caso sarà stato un qualche script scritto a c...zzoo.
-- Yena --

 nel mio caso sarà stato un qualche script scritto a c...zzoo.
Sì però io ho un wordpress normalissimo, gestito da me..
-- 
Vide

 Ha 750MB di RAM assegnata.
I problemi li hai appena elencati:
- il kernel di lenny fa schifo e accoppiandolo ad un vmware ancora più 
schifoso, ecco i problemi. Consiglio di passare sicuramente ad un kernel 
superiore.
- alternativa 2: controlla che il DNS funzioni sempre e sia raggiungibile.

 superiore.
Proviamo a vedere se è questo. Provo prima col backport e poi sennó compilo. 
-- 
Vide

 compilo.
Insallato 2.6.30-bpo.1-amd64. Vediamo come si comporta.
-- 
Vide

 Configurazione:
hai dei plugin installati?
a volte ci sono dei bachi nei plugin imbarazzanti, tipo loop senza fine e 
compagnia bella (IP City Cluster plug-inL ad esempio).
per assurdo è peggio dare poca ram al php perché non è in grado di terminare 
i calcoli dello script e se doveva cachare un oggetto grande non riesce mai 
a farlo e in questo modo smarmella tutto il server provandoci diverse volte 
fino ad alzare bandiera bianca.
qui ci sono un po' di consigli per apache su vps per wp, non so se sono ok 
però:
http://jestro.com/optimize-apache-slow-vps-wordpress/
che versione hai di wordpress?

 che versione hai di wordpress?
Sempre l'ultima, che WP è una gruviera universalmente conosciuta e non mi 
piacciono i defacement :)
-- 
Vide

 Insallato 2.6.30-bpo.1-amd64. Vediamo come si comporta.
Uguale :/ è appena successo
-- 
Vide

Vide wrote:

prova a uccidere i plugins per qualche tempo, c'è un path temporale da 
seguire o semplicemente ogni tanto decide di suicidarsi?
-- 
give it away



dmesg dice qualcosa ?
(sia sul guest che sull'host)

 
Alla peggio monta monit e impostalo
che riavvii apache quando sta finendo la RAM ...
E' poco elegante ma ti tiene su il server.
-- Yena --

 dmesg dice qualcosa ?
Nada de nada :/
Semplicemente Apache si rimbambisce e ci mette un sacco a servire, facendo 
generare un sacco di child che si mangiano la memoria
-- 
Vide

 E' poco elegante ma ti tiene su il server.
Lo posso fare con Zabbix trnquillamente, però vorrei capire *perchè* passa.
-- 
Vide

Vide wrote:

se è uno script php negli error log dovresti vedere cosa smarmella il 
server. hai guardato?
-- 
give it away

 piacciono i defacement :)
(A pensar male si fa peccato, ma ogni tanto ci si azzecca)
La butto li...non e' che un qualche ultimo aggiornamento di WP
ha introdotto una nuova fitciurs tipo "l'allegro ammazza
risorse" ? :o)
A me e' successo con Joomla...
Su eventuali strade da percorrere, se non ne vieni a capo
io andrei sul grezzo:
1. hai possibilita di sposare il sito web su un'altra macchina
con configurazione software uguale ? potresti facilmente
stabilire se e' un problema del WP !
2. sebbene un po' pasticciona, hai possibilita' di installare sulla
stessa macchina un alternativa ad apache (Lighttpd ad esempio)
tanto per verificare se si comporta alla stessa maniera ?
Non credo siano tentativi che risolvono il problema, ma almeno
o potrebbero darti qualche indicazioni in piu' :)
Ciao
Beppe

 Sparate pure anche se sembrano ovvietà, che al massimo le scarto :)
l'ho buttata lì... (naturalmente a caso)

 Sparate pure anche se sembrano ovvietà, che al massimo le scarto :)
da /server-status quando va in bambola, si vede quali sono le url che stanno 
appese? inizierei a controllare quello e i log php
 
-- 
give it away

 stanno appese? inizierei a controllare quello e i log php
Il punto è che non sembrano esserci URL appese!
Comunque ci sono più blog sullo stesso server, tutti WP ma istanze diverse, 
e ce n'erano alcune non aggiornate alla ultimissima. Aggiornate anche quelle 
e la cosa è peggiorata. Sembra proprio essere qualcosa di codice. Anche se, 
ripeto, è strano dato l'output di server-status.
-- 
Vide

Vide wrote:

il tuo my.cnf quante connessioni contemporanee permette?
quanto traffico fa in un giorno quel server http?

 ripeto, è strano dato l'output di server-status.
Hai controllato se la risoluzione DNS funziona ?
Hai controllato, usando plugin tipo gli antispam, se le connessioni verso 
i server dell'antispam funzionano ?
Quando ci sono processi che tentano I/O o risoluzioni di nomi, se c'è 
qualche problema sulla rete tutto si imbabola.
Test brutale ma probabilmente efficace:
Per TUTTE le connessioni in uscita (e solo in uscita) dall'utente/utenti 
con cui girano i wordpress, fai un bel REJECT con iptables.
Gli antispam non funzioneranno, le connessioni in uscita verso feed o 
robe varie non funzioneranno, ma se non ti si chianta più hai isolato il 
problema.