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 13:51] joseinformatica:weblogic:heapdump [2019/01/22 08:44] (current) – [Eclipse Memory Analizer] javi
Line 4: Line 4:
      
 Añadir el siguiente parámetro para que haga un heapdump cuando hay un out of memory OOM: 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   -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: 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>   # jinfo -flag HeapDumpOnOutOfMemoryError <PID>
      
   -XX:-HeapDumpOnOutOfMemoryError   -XX:-HeapDumpOnOutOfMemoryError
 +</code>
 En este caso tiene un signo - que quiere decir que no lo tiene activado. Lo activamos poniendo el signo +: En este caso tiene un signo - que quiere decir que no lo tiene activado. Lo activamos poniendo el signo +:
   # jinfo -flag +HeapDumpOnOutOfMemoryError <PID>   # jinfo -flag +HeapDumpOnOutOfMemoryError <PID>
      
 Comprobamos que lo tiene activado: Comprobamos que lo tiene activado:
 +<code>
   # jinfo -flag HeapDumpOnOutOfMemoryError <PID>   # jinfo -flag HeapDumpOnOutOfMemoryError <PID>
      
   -XX:+HeapDumpOnOutOfMemoryError   -XX:+HeapDumpOnOutOfMemoryError
 +</code>
 ====== Generar Heap Dump ====== ====== 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 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
Line 27: Line 29:
 ====== Analizar ====== ====== Analizar ======
 ===== Eclipse Memory Analizer ===== ===== Eclipse Memory Analizer =====
 +
 ./MemoryAnalyzer ./MemoryAnalyzer
  
Line 37: 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.1376920313.txt.gz · Last modified: 2015/04/13 20:19 (external edit)