IBM: WebSphere and Their JVM

The IBM JVM

ibm-jvm-structure.gif

Troubleshooting

  • JVM Logs at: install_root/profiles/profile_name/logs/server_name
    • System.err = stack traces!
    • native_stderr.log = garbage collection reports (when JVM is started-up with "-verbose:gc" option)
  • IBM Service Log
    • Binary need their tool (Log and Trace Analyzer) to view

Garbage Collection

IBM Diagnostic Guide 1.4.2 -- Understanding the Garbage Collector — helpful tips, parameters, etc. specific to the IBM JVM

Overview

  • Object Allocation
    1. There's a heap lock to prevent concurrent modification of the heap allocation tables.
    2. Individual threads are allocated "cache" (aka Thread Local Heap or "TLH") from which they are guaranteed to not contend with other threads. This is for allocating small (<512 bytes) objects.
    3. Then there's the Large Object Area (LOA); a section of the Heap reserved for allocating large (> 64Kbytes) objects.
  • Garbage Collection

Policies

  • optthruput (default) — maximize throughput (longer GC times but more thorough); use until pause times get too long. This option disables "concurrent mark"
  • optavgpause — minimize average pause time by enabling "concurrent mark"

Interpreting Logs

  • OutOfMemoryError
    • "Insufficient heap space to satisfy allocation request" when the error occurs because not enough heap
    • (class loading memory space; see this if you reload WARs repeatedly)

native_stderr.log

On start-up, log looks like this:

[ JVMST080: verbosegc is enabled ]
[ JVMST082: -verbose:gc output will be written to stderr ]
  <GC[0]: Expanded System Heap by 65536 bytes
  <GC[0]: Expanded System Heap by 65536 bytes
  <GC[0]: Expanded System Heap by 65536 bytes
  <GC[0]: Expanded System Heap by 65536 bytes
  <GC[0]: Expanded System Heap by 65536 bytes
  <GC[0]: Expanded System Heap by 65536 bytes
  <GC[0]: Expanded System Heap by 65536 bytes
  <GC[0]: Expanded System Heap by 65536 bytes
  <GC[0]: Expanded System Heap by 65536 bytes

A typical garbage collection looks like this:

<AF[1]: Allocation Failure. need 2072 bytes, 0 ms since last AF>
<AF[1]: managing allocation failure, action=1 (0/255012224) (13421696/13421696)>
  <GC(1): freeing class com.ibm.ws.rsadapter.jdbc.WSJccPreparedStatement(70380520)>
  <GC(1): unloaded and freed 1 class>
  <GC(1): GC cycle started Tue Oct 23 07:04:50 2007
  <GC(1): freed 189599024 bytes, 75% free (203020720/268433920), in 210 ms>
  <GC(1): mark: 87 ms, sweep: 18 ms, compact: 105 ms>
  <GC(1): refs: soft 0 (age >= 32), weak 72, final 1229, phantom 14>
  <GC(1): moved 68544 objects, 4950536 bytes, IC reason=13>
<AF[1]: completed in 213 ms>
  <GC[1]: Expanded System Heap by 65536 bytes

Core dump requests and report of output are here:

JVMDG217: Dump Handler is Processing Signal 3 - Please Wait.
JVMDG303: JVM Requesting Java core file
JVMDG304: Java core file written to /usr/WebSphere/AppServer/profiles/AppSrv01/javacore28306.1193139812.txt
JVMDG215: Dump Handler has Processed Dump Signal 3.

Rational Application Developer (RAD)

Tacit Migration Operation

Sometimes the IDE will hang while doing "Tacit Migration Operation". No, it's not a trojan horse developed by TK, it's a bug. If this happens, try this:

Window-> Preferences -> Workbench-> Startup and Shutdown -> Disable "Compatibility Engine Startup Hook"

(reference: http://forums.systeminetwork.com/isnetforums/showthread.php?t=48945 and http://archive.midrange.com/wdsci-l/200606/msg00107.html)

WebSphere Transaction Management

RMLT
Resource Manager Local Transaction

Local Transaction Containment

  • resolution-control — who decides how to resolve an unresolved transaction.
    • Must be "Application" before an app can touch the autocommit attribute of a connection.

Helpful Links

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License