Newsgroup: it.comp.os.linux.sys
Titolo: Apache e Zope mi succhiano la RAM

Salve,
oggi controllando lo stato del server mi sono accorto che su 1Gb di RAM ne
stava occupando 650 (tolti buffer e cache... 600 Mb reali!)
Allora ho dato un top, ordinato per memoria, ed ecco cosa mi dice:
 1151 zope      20   0  102m  57m 8268 S  0.0  5.7   0:06.59 python2.2
 1190 www-data  20   0  162m  14m 157m S  0.0  1.5   0:00.02 apache
 1191 www-data  20   0  162m  14m 157m S  0.0  1.5   0:00.03 apache
 2671 www-data  20   0  162m  14m 157m S  0.0  1.4   0:00.00 apache
 2672 www-data  20   0  162m  14m 157m S  0.0  1.4   0:00.00 apache
 2673 www-data  20   0  162m  14m 157m S  0.0  1.4   0:00.00 apache
 1192 www-data  21   0  162m  14m 157m S  0.0  1.4   0:00.00 apache
 1193 www-data  21   0  162m  14m 157m S  0.0  1.4   0:00.00 apache
 1194 www-data  21   0  162m  14m 157m S  0.0  1.4   0:00.00 apache
 1195 www-data  21   0  162m  14m 157m S  0.0  1.4   0:00.00 apache
 1196 www-data  22   0  162m  14m 157m S  0.0  1.4   0:00.00 apache
 1197 www-data  22   0  162m  14m 157m S  0.0  1.4   0:00.00 apache
 1198 www-data  22   0  162m  14m 157m S  0.0  1.4   0:00.00 apache
 1199 www-data  23   0  162m  14m 157m S  0.0  1.4   0:00.00 apache
 1189 root      20   0  162m  14m 157m S  0.0  1.4   0:00.72 apache
Zope, appena partito, si succhia 40 Mb. Dopo un paio di visite a un solo
sito servito da lui arriva a 102 Mb. Stamattina era a 198 Mb...
E Zope sto pensando di eliminarlo (tanto c'e` un solo sito sopra, per
sperimentazione, faccio prima a rifarlo in PHP che a spendere soldi per
aggiungere RAM)...
... ma Apache! Come posso fare per controllare cosa occupa tutta quella
RAM?
(ok, 157 Mb sono condivisi, ma sono 157 Mb!)
Il kernel e` un 2.6.8.1 con patch ck-server. Se e` questo il problema
posso tornare al 2.4.27.
Grazie per l'aiuto. Bye.

 RAM?
Se lo hai abilitato http://...iltuoip/server_status
Ma se ce l'hai la ram e non la usi che ce l'hai a fare? Linux non e'
Windows.
Davide
-- 
If you want to travel around the world and be invited to speak at a lot of
different places, just write a Unix operating system.
   -- Linus Torvalds

 Windows.
Ehm... non sono un CL qualsiasi. Lo so che ci sono i buffer e la cache, e
li ho tolti dal conto (altrimenti sarebbero stati 998 Mb occupati su 1024...
Il problema e` che apache, appena partito, si prende quei 157 Mb di
memoria e non so cosa ci faccia. E Zope e` a 57 Mb di RES, con solo 8 Mb
di SHARED (presumo le librerie di python).
Mi viene un dubbio: ho disabilitato l'overcommit della memoria da parte
del kernel (echo 2 >/proc/sys/vm/overcommit_memory). Non e` che e` quello
che mi tiene occupata tutta la RAM? Pero` vorrebbe dire che apache
comunque alloca memoria che non usa praticamente mai...
Bye.

/imho on
se il server non swappa non c'è bisogno di farsi seghe mentali....
/imho off
-- 
"Ho conosciuto Andreotti, che e' arrivato alla quinta reincarnazione.
Purtroppo per lui, nello stesso corpo..."
                -- Beppe Grillo

 se il server non swappa non c'è bisogno di farsi seghe mentali....
Il server non swappa, anche perche` non e` ancora pienamente in
produzione. Per adesso ci sono 3 siti sopra, di cui 2 in apache e 1 in
zope, ma se gia` cosi` occupa tutta quella RAM, spero che regga quando ci
sposto sopra altri due siti ben piu` pesanti (e popolari) e soprattutto
quando i siti saranno ben piu` di 5... :/
Cmq, ho configurato server-status e non mi da` nessuna info utile. Solo la
status line di apache e la lista dei processi attivi/inattivi e il
traffico. Niente occupazione di RAM.
Bye.

 Il kernel e` un 2.6.8.1 con patch ck-server.
ma la patch ck in questione non è quella che forza a tenere tutto in
memoria il più possibile?



Quella per i server non dovrebbe farlo. In ogni caso, oltre ai 600 Mb
occupati, ne ho anche 70 di swap (di roba inutilizzata,
probabilmente, visto che non swappa mai).
Ho settato io che quando un processo forka occupa realmente la memoria
invece di attivare il CopyOnWrite (con overcommit_memory a 2), ma il
dubbio rimane: cosa ci fa apache con 150 Mb di memoria condivisa tra i
vari figli?
Grazie. Bye.

 vari figli?
boh. Comunque, scusa, perché hai disabilitato il copyonwrite? 

 boh. Comunque, scusa, perché hai disabilitato il copyonwrite?
Per evitare che il sistema killasse processi a vanvera in mancanza di RAM.
Cosi` semplicemente non li fa partire.
Il problema e` che gran parte dei programmi sotto Linux sono scritti male
(me ne sto accorgendo) e allocano memoria per niente.
Proprio oggi dpkg non mi ha fatto gli aggiornamenti perche` non gli
bastavano 300 Mb di RAM + 60Mb di swap.
Credo che la stessa cosa la faccia apache, zope e tutto il resto.
Ho dovuto riabilitare il copyonwrite. :/
Bye.

 Ho dovuto riabilitare il copyonwrite. :/
guarda, il cow è presente non solo in linux ma anche in altri sistemi. Ha
un bel po' di vantaggi, disabilitarlo per non togliere l'oom-killer mi
sembra una soluzione poco furba.
Siccome anch'io uso zope con varie istanze, ho fatto un controllo, ho un
giga di ram, usati 960 mega, di cui 430 per buffer. E per darti un'idea
del carico
$ ps aux | grep zope | wc -l
26
$ ps aux | grep apache | wc -l
19
$ ps aux | grep apache-ssl | wc -l
10
quindi non è che il server si gratta. E uso il 2.4.27 e ho disabilitato
l'oom-killer.

 del carico
Faro` ancora un po' di monitoring. Adesso sto sperimentando con apache2
che occupa molta meno memoria di apache1.3, ma voglio vedere se con php e`
abbastanza stabile (ho usato mpm-prefork) da metterlo in produzione.
Grazie per l'aiuto. :)
Bye.

 caricare il find per updatedb...
prendi l'ultimo 2.4 e assicurati di disoccupare l'oomkiller. Però strano,
a me non è mai successo una roba simile che il find faccia crepare
apache o zope.
Ciao

 apache o zope.
Dicevo find per dire qualcosa che parte da solo a orari assurdi (3 di
notte...).
Mi e` successo sul desktop che lanciando un comando (non ricordo cosa) mi
abbia ucciso il server X che era quello piu` grosso in memoria... :/
Visto che sul server X non c'e` e apache occupava quasi 200 Mb avevo paura
che mi uccidesse il server web.
Bye.

 OK, preso e compilato, adesso installo e vedo come va :)
Scusate l'auto-reply, ma ho messo il 2.4.27 e sono rimasto... come dire... :)
Adesso apache occupa 12Mb invece si 157, Zope 27Mb invece di 102.
srv1:~# free
             total       used       free     shared    buffers     cached
Mem:       1033748     338688     695060          0      12948     150384
-/+ buffers/cache:     175356     858392
Swap:       373916          0     373916
175 Mb occupati invece di 600 (poco dopo il boot).
Mi sa che il 2.6 ha ancora qualche problemino. :/
La patch per usare 1Gb di RAM nel 2.4 me la sono fatta a mano copiando da
quella del 2.6. Spero funzioni! :)
Grazie ancora per la chiacchierata. Bye.

 
il 2.6 imho fa ancora molto cagare per la produzione.
Stanno sperimentando sulle VM, sullo swap e su altre cose...
le prestazioni dei DB con accessi R e W concorrenti suxano di brutto.
Il buon vecchio 2.4 con le -lck invece va di lusso.
Max

 Il buon vecchio 2.4 con le -lck invece va di lusso.
Infatti e` quello che uso adesso. E sto pensando di tornare a usarlo anche
sul desktop, finche` non arrivera` la 2.7.x, cosi` sperimentano li` invece
che nel kernel "stabile"...
Bye.