[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Uso Ram




On Oct 18, 2011 8:09 PM, "Angel Claudio Alvarez" <angel@angel-alvarez.com.ar> wrote:
>
> El mar, 18-10-2011 a las 17:28 +0200, Esteban Torres Rodríguez escribió:
> > El día 18 de octubre de 2011 17:19, Marc Aymerich
> > <glicerinu@gmail.com> escribió:
> > >
> > >
> > > 2011/10/18 Esteban Torres Rodríguez <mortenol.torres@gmail.com>
> > >>
> > >> Buenas,
> > >>
> > >> Tengo una duda de la gestión de la Ram en linux. Hasta donde yo sé,
> > >> con el uso normal de un server linux, este va cacheando la memoria que
> > >> se va utilizando para que la futura utilización de dicha memoria sea
> > >> mejor, pero me encuentro en casos en que el server tiene cacheado el
> > >> 70% de la memoria y cuando un proceso solicita más memoria no la
> > >> encuentra (por ejemplo un proceso java en tomcat).
> > >>
> > >> He limpiado la cache con sync; echo 3 > /proc/sys/vm/drop_caches, pero
> > >> quiero saber como funciona la memoria RAM en el server.
> > >>
> > >> Se supone que cuando un proceso necesita mas memoria, dicho proceso
> > >> tiene que ir a la cache o es el sistema operativo quien la debe
> > >> liberar?
> > >>
> > >> Cada cuanto tiempo se libera la memoria cacheada o hay que forzar
> > >> dicha limpieza?
> > >
> > > La cache de disco no se descarta hasta que ya no queda más memória libre y
> > > un proceso pide más. Creo que el problema reside en la configuración de tu
> > > aplicación java. No soy un experto pero creo las aplicaciones Java se
> > > configuran con unos parametros que indican el minimo de memoria y el maximo
> > > que la maquina virtual java que ejecuta la aplicación tiene que consumir.
> > > Seguramente tendras puesto el minimo muy alto y java se queja de que no
> > > puede colocar la JVM.
> >
> > Efectivamente. En un server con 3 Gb de Ram tiene configurado al
> > proceso java que como máximo pille 1 Gb y como mínimo 1 Gb. El server
> > con el paso de los días se me queda el 70% cacheado y el 30 % en uso.
> > El proceso java se queda colgado a los 2 días.
> >
> > Creo que va a ser problema del java (necesito demostrarlo), lo que
> > pasa es que el administrador de la aplicación no soy yo. Con lo cual
> > yo digo que es de java y el admin del servidor de aplicaciones me dice
> > que es la mala gestión de la memoria de la máquina.
> No necesitas demostrar nada
> Si tiene un maximo de 1gG seteado en el arranque de la jvm eso es lo
> maximo que va a poder pedir cualquier programa que este corriendo en esa
> jvm. Si el programa no la libera, ni llama al gc te va a salir un out of
> memory grande como una casa.
> Si la arquitectura del S.O. es de 32 bits le vas a poder setear como
> maximo 2G a la jvm por lo que la ram de ese server te sobra.
> Si con 2G te sigue tirando OOM el problema esta en el desarrollador.
> ( no conozco muchos programadores java que sean criteriosos en el uso de
> la memoria)
>
> >
> > En fin...
> >
> >
> > >
> > > --
> > > Marc
> > >
> >
> >
>
>
>
> --
> To UNSUBSCRIBE, email to debian-user-spanish-REQUEST@lists.debian.org
> with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org
> Archive: [🔎] 1318984761.2717.3.camel@gabita2.angel-alvarez.com.ar">http://lists.debian.org/[🔎] 1318984761.2717.3.camel@gabita2.angel-alvarez.com.ar
>

Buenas Noches:

Te recomiendo, si de una prueba se trata, el uso del comando "pmap -x <pid>". Te ofrece el uso detallado de la memoria usada por un proceso. Lo uso todo el tiempo, cuando deseo chequear la memoria usada por cualquier proceso, en especial con JVM de Java.

Puedes ejecutarlo al iniciar y monitorear su comportamiento, que segun describes, si los parametros de memoria inicial (-XMS) y maxima (-XMX) son iguales, no deben variar en mucho. Pregunta tambien por los parametros de "PermGen", para conocer si son suficientes para la aplicacion.

La columna "RSS" del comando "ps -ef" puede ser a veces engañosa. Da parte de la memoria residente usada, pero no el total de la memoria virtual.

Ya como una recomendacion como programador, sugiere el uso de alguna herramienta de "profiler" o en caso de Apache Tomcat, alguna que haga uso de JMX, para conocer el uso que internamente hace la JVM de la memoria.

Saludos,

Germán Cardozo Chirinos

P.D. la falta de acentos fue intencional...


Reply to: