User Tools

Site Tools


informatica:weblogic:heapdump

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
informatica:weblogic:heapdump [2013/08/19 10:37] joseinformatica:weblogic:heapdump [2019/01/22 08:44] (current) – [Eclipse Memory Analizer] javi
Line 1: Line 1:
 ====== HeapDump ====== ====== HeapDump ======
 +Hacer un heapdump en caliente. Para la JVM y el servidor de aplicaciones no responde a peticiones:
   jmap -dump:format=b,file=dump.bin <pid>   jmap -dump:format=b,file=dump.bin <pid>
 +  
 +Añadir el siguiente parámetro para que haga un heapdump cuando hay un out of memory OOM:
 +<code>
 +  -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/weblogic/dumps
 +</code>
 +Se puede añadir en caliente. Primero miramos si lo tiene activado. Nos tenemos que fijar en el sigo - + delante de Heap:
 +<code>
 +  # jinfo -flag HeapDumpOnOutOfMemoryError <PID>
 +  
 +  -XX:-HeapDumpOnOutOfMemoryError
 +</code>
 +En este caso tiene un signo - que quiere decir que no lo tiene activado. Lo activamos poniendo el signo +:
 +  # jinfo -flag +HeapDumpOnOutOfMemoryError <PID>
 +  
 +Comprobamos que lo tiene activado:
 +<code>
 +  # jinfo -flag HeapDumpOnOutOfMemoryError <PID>
 +  
 +  -XX:+HeapDumpOnOutOfMemoryError
 +</code>
 +====== Generar Heap Dump ======
 +Con la aplicación de Hello World y una instancia de -Xms128m -Xmx128m de weblogic, lanzamos un test de Jmeter de 100 Threads con un Loop Count de 10.000 por ejemplo. A mi me ha generado el HeapDump con formato: jrockit_<PID>.hprof
 +
 +
      
 ====== Analizar ====== ====== Analizar ======
 ===== Eclipse Memory Analizer ===== ===== Eclipse Memory Analizer =====
 +
 ./MemoryAnalyzer ./MemoryAnalyzer
  
Line 14: Line 40:
 </code> </code>
  
 +Para indagar el ".war" o ".ear" que lo causa:
 +
 +https://www-01.ibm.com/support/docview.wss?uid=swg21673014
 +
 +1. Abrir el archivo ".dmp"
 +
 +2. Tras muuuucho tiempo se abirá el informe
 +
 +3. Click en el icono con los engranajes tipo "settings" en la parte superior
 +
 +4. Click encima del "Object/Stack Frame" que coincida con el ID del thread sospechoso, en este caso tiene el "Retained Heap" más grande
 +
 +5. En la parte izquierda identificar "contextClassLoader", igual hay que hacer click en "25 out 36 displayed" o similar para expandir todas las opciones:
 +
 +<code>
 +Type|Name              |Value
 +--------------------------------------------------------------------------------
 +ref |contextClassLoader|com.ibm.ws.classloader.CompoundClassLoader @ 0x6ffd0bb40
 +--------------------------------------------------------------------------------
 +</code>
 +
 +6. Situar el ratón encima, botón derecho, "Go into"
 +
 +7. En la parte izquierda identificar "name", igual hay que hacer click en "25 out 36 displayed" o similar para expandir todas las opciones:
 +
 +<code>
 +Type|Name|Value
 +-------------------------------------------------------
 +ref |name|war:UN LAGO BLANCO bla bla/MyPortlet.war
 +-------------------------------------------------------
 +</code>
 +
 +A partir de aquí la documentación sugiere indicar el .war (o .ear) al desarrollador y que mire
 +
 +====== Error: out of memory ======
 +
 +https://wiki.eclipse.org/MemoryAnalyzer/FAQ#Out_of_Memory_Error_while_Running_the_Memory_Analyzer
 +
 +Solución:
 +
 +1. Editar el .ini:
 +
 +<code>
 +vim /path/to/math/MemoryAnalyzer.ini
 +</code>
 +
 +Y añadir al final:
 +
 +<code>
 +-vmargs
 +-Xmx14g
 +-XX:-UseGCOverheadLimit
 +</code>
 +
 +En este ejemplo se estable el límite de consumo de memoria RAM para la aplicación MAT en 14 GB.
 +
 +2. Volver a arrancar MAT
 ===== Heap Analyzer (IBM) ===== ===== Heap Analyzer (IBM) =====
   java -jar ha447.jar   java -jar ha447.jar
informatica/weblogic/heapdump.1376908648.txt.gz · Last modified: 2015/04/13 20:19 (external edit)