Newsgroup: it.comp.os.linux.sys
Titolo: Informazioni su server linux e gestione della ram

Salve, è la prima volta che scrivo su questo ng, avrei bisogno di alcune 
informazioni riguardanti server linux (rh7.3); il pc è un biprocessore 
PIII 1Ghz con 1GB di ram.
Su questo server girano apache,php,mysql,postgresql,tomcat e + o - le 
solite applicazioni di corredo. Il server viene utilizzato come 
piattaforma per gestire tramite interfaccia web un ambiente di persone 
che interagiscono fra di loro. Alla base di queste interazioni ci sono 
serlet java, database e interfaccie in php. Il carico del server è di 
circa 3000 accessi al giorno.
Visto che non sono molto esperto di standard azienzali avevo dei dubbi 
riguardo la richiesta di ram che un server di questo tipo necessita per 
essere stabile e non avere problemi di poca ram.
Questo perchè ho notato che anche appena riavviato il server alloca 
subito 950MB di memoria fisica! In pratica ne restano liberi sempre solo 
50 che mi sembrano molto pochi.
La cosa che mi stupisce è che cmq le applicazioni che partono sono abb 
standard e non mi sembra possibile che si prenda 900mb solo per avviarsi.
Per questo motivo avevo bisogno di sapere da qualche esperto di server 
aziendali i requisiti, riguardo la RAM, che un server di questo tipo 
dovrebbe avere. 1GB è poco? Oppure devo incominciare a controllare se 
c'è qualcosa che non va nelle applicazioni? Ovvero controlli di 
allocazione ram ecc. Questo solo per avere un quadro e farmi un'idea su 
dove andare a parare.
Grazie dell'attenzione, Federico.

 
Questo potrebbe essere dovuto al fatto che Linux considera la Ram libera
come Ram sprecata. Hai visto ad esempio con top se la ram è occupata dai
programmi oppure gran parte di essa è cached? Se è così (se usa la ram
per la cache del disco) allora non ci sono problemi perché appena serve
Ram viene "liberata" proprio dalla cache. 
Ciao
WildEagle

WildEagle ha scritto:

Allora, ci sono circa 450mb cached e questo è l'output del server che 
sono riuscito a catturare (non ho capito come mandarlo in output con 
ordinamento per ram su file), ordinati per uso di ram (non ci sono 
tutti), tanto per darti un idea:
   9:32pm  up 6 days,  4:05,  1 user,  load average: 0.09, 0.15, 0.16
106 processes: 105 sleeping, 1 running, 0 zombie, 0 stopped
CPU0 states:  0.0% user,  0.0% system,  0.0% nice, 100.0% idle
CPU1 states:  0.2% user,  6.4% system,  0.0% nice, 92.4% idle
Mem:  1030680K av,  979352K used,   51328K free,  0K shrd,  136928K buff
Swap: 2040244K av,     184K used, 2040060K free           451788K cached
   PID USER     PRI  NI  RSS SHARE  SIZE STAT %CPU %MEM   TIME COMMAND
23815 root      25   0 104M 14820  104M S     0.0 10.3   0:06 java
23816 root      15   0 104M 14820  104M S     0.0 10.3   0:00 java
23817 root      15   0 104M 14820  104M S     0.0 10.3   0:21 java
23818 root      15   0 104M 14820  104M S     0.0 10.3   0:00 java
23819 root      15   0 104M 14820  104M S     0.0 10.3   0:00 java
23820 root      15   0 104M 14820  104M S     0.0 10.3   0:11 java
23821 root      20   0 104M 14820  104M S     0.0 10.3   0:00 java
23822 root      20   0 104M 14820  104M S     0.0 10.3   0:00 java
23823 root      15   0 104M 14820  104M S     0.0 10.3   0:00 java
23824 root      16   0 104M 14820  104M S     0.0 10.3   0:37 java
24254 root      15   0 104M 14820  104M S     0.0 10.3   0:00 java
24255 root      15   0 104M 14820  104M S     0.0 10.3   0:01 java
24256 root      15   0 104M 14820  104M S     0.0 10.3   0:00 java
24257 root      15   0 104M 14820  104M S     0.0 10.3   0:03 java
24258 root      15   0 104M 14820  104M S     0.0 10.3   0:00 java
24259 root      15   0 104M 14820  104M S     0.0 10.3   0:06 java
24260 root      15   0 104M 14820  104M S     0.0 10.3   0:00 java
24261 root      15   0 104M 14820  104M S     0.0 10.3   0:00 java
24262 root      15   0 104M 14820  104M S     0.0 10.3   0:00 java
24263 root      15   0 104M 14820  104M S     0.0 10.3   0:00 java
24264 root      15   0 104M 14820  104M S     0.0 10.3   0:00 java
24265 root      15   0 104M 14820  104M S     0.0 10.3   0:00 java
24266 root      15   0 104M 14820  104M S     0.0 10.3   0:02 java
24267 root      15   0 104M 14820  104M S     0.0 10.3   0:00 java
24268 root      15   0 104M 14820  104M S     0.0 10.3   0:04 java
24270 root      15   0 104M 14820  104M S     0.0 10.3   0:06 java
24271 root      15   0 104M 14820  104M S     0.0 10.3   0:00 java
24272 root      15   0 104M 14820  104M S     0.0 10.3   0:00 java
24273 root      15   0 104M 14820  104M S     0.0 10.3   0:00 java
24274 root      20   0 104M 14820  104M S     0.0 10.3   0:00 java
24275 root      20   0 104M 14820  104M S     0.0 10.3   0:00 java
24276 root      20   0 104M 14820  104M S     0.0 10.3   0:00 java
24277 root      20   0 104M 14820  104M S     0.0 10.3   0:00 java
24278 root      20   0 104M 14820  104M S     0.0 10.3   0:00 java
24279 root      20   0 104M 14820  104M S     0.0 10.3   0:00 java
24280 root      16   0 104M 14820  104M S     0.0 10.3   0:00 java
24293 root      15   0 104M 14820  104M S     0.0 10.3   0:01 java
24328 root      15   0 104M 14820  104M S     0.0 10.3   0:00 java
24332 root      15   0 104M 14820  104M S     0.0 10.3   0:08 java
24334 root      15   0 104M 14820  104M S     0.0 10.3   0:02 java
24340 root      15   0 104M 14820  104M S     0.0 10.3   0:02 java
24348 root      15   0 104M 14820  104M S     0.0 10.3   0:05 java
24349 root      15   0 104M 14820  104M S     0.0 10.3   0:05 java
24350 root      15   0 104M 14820  104M S     0.0 10.3   0:07 java
24355 root      15   0 104M 14820  104M S     0.0 10.3   0:04 java
24357 root      15   0 104M 14820  104M S     0.0 10.3   0:03 java
24361 root      15   0 104M 14820  104M S     0.0 10.3   0:00 java
24362 root      15   0 104M 14820  104M S     0.0 10.3   0:00 java
  4365 nobody    15   0  27M  6516 28136 S     0.0  2.7   0:31 httpd
  3881 nobody    15   0  27M  6524 28016 S     0.0  2.7   0:53 httpd
  9944 nobody    15   0  27M  6508 27800 S     0.0  2.6   0:11 httpd
Un altra cosa che non capisco è come fanno a esserci così tanti processi 
java da 104MB l'uno. Grazie ancora, Federico.

 
Non usa swap, quindi č normale che linux allochi praticamente tutta la 
ram disponibile? Anche se lo uso da tanto, dal lato casalingo non mi ero 
mai preoccupato di questi problemi e quindi aimč ignoravo proprio la 
cosa. Cmq prova a buttare un occhio al mio reply precedente in cui si 
vede una stampata di top, č un po' strana l'allocazione di java.
Grazie ancora, Federico.

tanti processi java da 104MB l'uno. Grazie ancora, Federico.
non sono tutti processi, nel senso che non sono tutti "programmi" singoli
ma sono thread (figli?) dell'unico processo che hai lanciato tu al boot.
Hai diversi httpd per rispondere a diverse chiamate contemporanee che
arrivano al server, così anche per java ma non occupano 104Mb l'uno!.
Comunque se vuoi fare il conto "alla windows" la memoria libera
disponibile è la somma della free e della cached che in questo caso fa
circa 500Mb. Insomma sta abbastanza "scarico" e pimpante, mi sembra!
Ciao
WildEagle

 ma sono thread (figli?) dell'unico processo che hai lanciato tu al boot.
E' vero che sono thread!
Anche a me infatti pareva strano che con applicazioni abb standard come 
quelle citate in precedenza ci fossero dei problemi di ram.
Il fatto è che ogni 2/3 giorni (cmq abb random a volte anche 2 volte in 
un giorno) il tomcat si blocca (solo quello). Abbiamo fatto varie 
congetture tra cui anche questa della ram, che a questo punto si può 
scartare, e mi sembra ormai quasi sicuro che i problemi siano nelle 
applicazioni java che potrebbero avere qualcosa che non va.
Cmq grazie delle info mi siete stati molto d'aiuto.
Federico.

 un giorno) il tomcat si blocca (solo quello).
Anche a noi capitava: abbiamo verificato che passare ad un kernel 2.6 ha
praticamente azzerato i blocchi di tomcat. Evidentemente il 2.6 è *davvero*
anni luce avanti al 2.4 per quanto riguarda il multithreading...
-- 
Luca Villani     NOC Manager  -  Wireless Solutions S.p.A.  (Dada Group)
http://www.wseurope.com
          via Castiglione 25, 40124 Bologna Italy
T:
+39 051 2966826
   F:
+39 051 2966800
   M:
+39 348 5298542
   UIN:76272621
GPG public key available

 50 che mi sembrano molto pochi.
quella dimensione è significativa. Ricordando che linux usa tutta la
memoria disponibile che trova perché non usarla è stupido, visto che
l'hai pagata, c'è da spiegare perché sono 950 e non 1000.
Il kernel di linux può essere configurato per supportare 1 gb, 4 gb e 64
gb di memoria. Per fare le varie gestioni ha bisogno di strutture dati
sempre maggiori, per cui se tu hai un giga di ram e adotti la soluzione
minore da 1 gb di fatto sei in grado di indirizzare fino a 950 mb, che poi
vengono subito allocati a processi e cache. Se abiliti i 4 gb riesci ad
indirizzare tutto il gigabyte, ma di fatto perdi un centinaio di
megabyte perché hai le strutture dati più grandi e che occupano più
memoria. Per cui di solito è furbo utilizzare l'opzione 4 gb solo se hai
più di un giga di ram.
Quindi tanquillo, con un giga di ram sei nella situazione normale. E' il
tomcat che è un cassone enorme :-)

 E' il tomcat che è un cassone enorme :-)
s/cas/ces/
Max ^_^

 Max ^_^
he he :-)

megabyte perché hai le strutture dati più grandi
Così tanto?
-- 
Ci sono 10 tipi di persone al mondo: quelle che capiscono il sistema binario
e quelle che non lo capiscono.

 Così tanto?
sì. Per un giga di ram conviene avere il supporto minimo della meoria, è
quello che ne spreca meno 

quello che ne spreca meno 
Buono a sapersi.
Ma la perde in maniera invisibile, vero? Ho visto che con 2 GB
/proc/meminfo segna 2GB totali.
Devo quindi contare di averne 1,9 disponibili. La cosa mi interessa
particolarmente, perché uso VmWare e vorrei calcolare bene la quantità
da marcare come "intoccabile" perché riservata al sistema host.
Io pensavo di riservarne 200 mega, mi pare ora di capire che ne stavo
riservando 100.


 riservando 100.
ma ricorda che hai anche la memoria virtuale e tutto il meccanismo di
paginazione.

paginazione.
Certo, avevo paura solo di rallentare, non di rimanere a piedi.
Ora, comunque, ho messo a VmWare un tetto di 1750, che mi sembra
comunque una bella quantità.


 
Urka che notizia interessante. E' in cantiere il passaggio ad un server 
con caratteristiche diverse, per cui potrei prendere in seria 
considerazione la possibilità di installare un kernel 2.6.
Thx, Federico. :)

Ottavio Campana ha scritto:

Grazie per la spiegazione completa sei stato molto chiaro. :)
P.S.
Riguardo al Tomcat, esiste qualche alternativa migliore come server java?

considerazione la possibilità di installare un kernel 2.6.
In tema di diffidenza verso il 2.6 mi pare che qualcuno sia stato
colpito dalla "sindrome di Windows". :)
In tema di kernel una versione maggiore e' davvero migliore di una
inferiore, non ci sono fregature sotto la carta dorata!
Ciao,
luigi