User Tools

Site Tools


informatica:weblogic:heapdump

Differences

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

Link to this comparison view

Next revision
Previous revision
informatica:weblogic:heapdump [2013/08/19 10:33] – created 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 9: Line 35:
  
 <code> <code>
-One instance of "weblogic.servlet.internal.WebAppServletContext" loaded by "sun.misc.Launcher$AppClassLoader @ 0xe1e7f018" occupies 15,153,312 (13.88%) bytes. The memory is accumulated in one instance of "java.util.concurrent.ConcurrentHashMap$HashEntry[]" loaded by "<system class loader>".+One instance of "weblogic.servlet.internal.WebAppServletContext" loaded by "sun.misc.Launcher$AppClassLoader  
 +@ 0xe1e7f018" occupies 15,153,312 (13.88%) bytes.  
 +The memory is accumulated in one instance of "java.util.concurrent.ConcurrentHashMap$HashEntry[]" loaded by "<system class loader>".
 </code> </code>
  
-==== Heap Analyzer (IBM) ====+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) =====
   java -jar ha447.jar   java -jar ha447.jar
  
 Saca un árbol de los sospechosos de memory leak Saca un árbol de los sospechosos de memory leak
  
informatica/weblogic/heapdump.1376908396.txt.gz · Last modified: 2015/04/13 20:19 (external edit)