Uploaded by ALEX ALBERTO DAVID USUGA

PR-01-Procedimiento de optimización de RAM con GC Java

advertisement
Procedimiento Garbage Collector Java
Responsable:
Fecha de revisión
Código:
Alex David Usuga
19/15/2023
PR-01
Pagina:
Referencia:
Fecha de emisión:
1
19/15/2023
1. REVISIÓN Y APROBACIÓN
Elaboró
Revisó
Aprobó
Alex David Usuga
Alex David Usuga
William Renan Santos
Analista de LD
Analista de LD
IT Productos Latam
DHL
DHL
DHL
2. CONTROL DE CAMBIOS
Revisión
Fecha de
modificación
Cambios realizados
Vigencia
1
19/15/2023
Ninguno
N/A
3. OBJETIVO
Objetivo que se busca al implementar este procedimiento.
Liberar parte de memoria RAM utilizada por los procesos de Java a través de GC.
4. ALCANCE
Este procedimiento afecta únicamente parte de la memoria que es utilizada por el proceso
parametrizado en el archivo registry. El servidor afectado es en cual este proceso es efectuado.
5. RESPONSABLE
Alex David Usuga, Analista de LD.
6. FRECUENCIA DE LA REVISIÓN
Este procedimiento se revisará por lo menos una vez al año, en cualquier mes o antes si hay
algún cambio o mejora significativos en el proceso.
7. DEFINICIONES
Definición de los términos que se utilizan durante el procedimiento y que requieren de una
explicación más detallada de su concepto.
GC: El recolector de elementos no utilizados (GC) administra automáticamente las solicitudes de
asignación de memoria dinámica de la aplicación.
Un recolector de elementos no utilizados realiza una gestión de memoria dinámica automática a
través de las siguientes operaciones:
•
Asigna y devuelve memoria al sistema operativo.
•
Entrega esa memoria a la aplicación a medida que la solicita.
•
Determina qué partes de esa memoria todavía están en uso por la aplicación.
•
Recupera la memoria no utilizada para que la aplicación la reutilice.
Procedimiento Garbage Collector Java
Responsable:
Fecha de revisión
Código:
Alex David Usuga
19/15/2023
PR-01
Pagina:
Referencia:
Fecha de emisión:
2
19/15/2023
Summary/Overview : Muestra cuatro gráficas; Uso de la memoria, los hilos del proceso,
las clases cargadas y el uso de la CPU
Memory : Información detallada sobre el uso de la memoria. Igualmente aporta gráficas y
“combos” para seleccionar un tipo de memoria concreta
Threads : Información detallada e individual del uso de hilos. Igualmente muestra su
propia gráfica
Classes : Informa sobre el número de clases cargadas y descargadas.
VM Summary : Muestra información sobre la máquina virtual; como el uso de hilos,
memoria consumida y algunos parámetros del OS
MBeas : Aquí se presenta una serie de directorios en árbol que contiene los métodos y
clases que permiten controlar el proceso java. Ya vimos en la primera entrada que esto
corresponde a la cala de instrumentación.
De todas las pestañas nos vamos a centrar tan solo en tres de ellas y especialmente en
la pestaña “Memory“.
8. DESCRIPCIÓN DE ACTIVIDADES
A. El primer paso es buscar el archivo registry, es donde está parametrizado las
conexiones a la BD, nombre del servicio web, RF, entorno y por supuesto los
parámetros de JAVA VM. Esto normalmente está en esta ruta en Windows:
\\ntv6prd.suppla.com\e$\JDA\NTV6WMSPD\LES\data
B. Después de haber identificado el archivo se procede a modificar el
parámetro:
[JAVA]
vm=C:\Program Files\Java\jre1.8.0_162\bin\java.exe
vmargs=-Xms2048m -Xmx12288m -Dlog4j2.formatMsgNoLookups=true XX:+HeapDumpOnOutOfMemoryError -XX:+UseG1GC
vmargs.mgendoc=-Xmx756M
native-vmargs=-Xmx128m -Dlog4j2.formatMsgNoLookups=true XX:+HeapDumpOnOutOfMemoryError -XX:+UseG1GC
El parámetro que está en rojo es el que pertenece al Garbage collector, este
se agrega a la línea. Este tipo de GC es: “G1 is a generational, incremental,
parallel, mostly concurrent, stop-the-world, and evacuating garbage collector
which monitors pause-time goals in each of the stop-the-world pauses.
Similar to other collectors, G1 splits the heap into (virtual) young and old
generations. Space-reclamation efforts concentrate on the young generation
where it is most efficient to do so, with occasional space-reclamation in the
old generation
Some operations are always performed in stop-the-world pauses to improve
throughput. Other operations that would take more time with the application
stopped such as whole-heap operations like global marking are performed in
Procedimiento Garbage Collector Java
Responsable:
Fecha de revisión
Código:
Alex David Usuga
19/15/2023
PR-01
Pagina:
Referencia:
Fecha de emisión:
3
19/15/2023
parallel and concurrently with the application. To keep stop-the-world pauses
short for space-reclamation, G1 performs space-reclamation incrementally in
steps and in parallel. G1 achieves predictability by tracking information about
previous application behavior and garbage collection pauses to build a model
of the associated costs. It uses this information to size the work done in the
pauses. For example, G1 reclaims space in the most efficient areas first (that
is the areas that are mostly filled with garbage, therefore the name).”
Imagen 1. Parametro de GC.
C. Despues de configurar el parametro se debe reiniciar el servicio MOCA y RF,
en este caso para Windows.
Procedimiento Garbage Collector Java
Responsable:
Fecha de revisión
Código:
Alex David Usuga
19/15/2023
PR-01
Pagina:
Referencia:
Fecha de emisión:
4
19/15/2023
Imagen 2. Servicios de Windows.
D. En este paso ya está todo configurado para realizar el proceso de barrido a
través de jconsole.exe que está en la siguiente ruta: C:\Program
Files\Java\jdk1.8.0_162\bin. Copiamos la ruta y luego ejecutamos CMD como
administrador.
Procedimiento Garbage Collector Java
Responsable:
Fecha de revisión
Código:
Alex David Usuga
19/15/2023
PR-01
Pagina:
Referencia:
Fecha de emisión:
5
19/15/2023
Imagen 3. Copiar e ir a la ruta, para esto se antecede CD.
E. Para ejecutar y administrar un proceso de java se debe obtener el PID o
process ID. Para esto vamos al administrador de tareas para visualizarlo o si
no está habilitado por favor seguir lo de la imagen.
Imagen 4. Habilitar PID y línea de comando
F. Después tener visual del PID que corresponde al de la aplicación, digitarlo en
la consola de CMD, jconsole.exe 16784, el numero corresponde al PID del
proceso.
Imagen 5. PID correspondiente al proceso para monitorear y controlar.
Procedimiento Garbage Collector Java
Responsable:
Fecha de revisión
Código:
Alex David Usuga
19/15/2023
PR-01
Pagina:
Referencia:
Fecha de emisión:
6
19/15/2023
Imagen 6. Digitar jconsole.exe y el PID.
Después de haber agregado la línea damos enter y este nos llevará a la
consola, antes de ingresar nos mostrará un pantallazo del tipo de conexión si
es segura y si nos queremos conectar, a lo que damos clic a (Insecure
connection).
Imagen 7. Conexión al PID a través de jconsole.
G. Estando en la consola nos vamos a la pestaña que dice memory.
Procedimiento Garbage Collector Java
Responsable:
Fecha de revisión
Código:
Alex David Usuga
19/15/2023
PR-01
Pagina:
Referencia:
Fecha de emisión:
7
19/15/2023
Imagen 8. Acceder a la pestaña de memory.
Podemos ver el uso de memoria del proceso.
Imagen 9. Consumo de memoria del PID, en el momento está consumiendo 11 GB de RAM.
Damos clic al botón de Perform GC, este ejecutará el proceso e iniciará a
eliminar hilos del proceso que no esté utilizando y los que si los llevará a otra
partición y otros los remarcará para dejarlos activos.
Procedimiento Garbage Collector Java
Responsable:
Fecha de revisión
Código:
Alex David Usuga
19/15/2023
PR-01
Pagina:
Referencia:
Fecha de emisión:
8
19/15/2023
Imagen 9. Después de haber dado clic a perform GC.
Nota: Después de haber dado clic a perform GC la memoria iniciará a
depurarse, esto no significa que la memoria quede totalmente optimizada,
solo matará procesos o hilos que ya no están usándose en este proceso, si
esto no funciona significa que la memoria como recurso está corta para todo
el nivel operativo por la cantidad de RF o pantallas en simultaneo.
Download