Troubleshooting an MFT agent with a Java heap exhaustion error
While processing a number of managed transfer requests, such as file-to-file,
message-to-file or file-to-message transfers, the agent abnormally ends (ABENDS) reporting a
java.lang.OutOfMemoryError, and at the time your total RAM memory was not fully
utilized. This exception has been caused by Java heap
exhaustion.
About this task
- An ABEND file. The name of this file conforms to the naming convention
ABEND.FTE.date_timestamp.identifier.log.
On Multiplatforms, the file is written to the
MQ_DATA_PATH/mqft/logs/coordination_qmgr_name/agents/agent_name/logs/ffdc
directory.
On z/OS®, the file is
written to the z/OS UNIX System Services (z/OS UNIX) location
$BFG_CONFIG/mqft/logs/coordination_qmgr_name/agents/agent_name/logs/ffdc
- A Javacore file. The name of this file has the following format:
javacore.datestamp.timestamp.pid.identifier.txt
On Multiplatforms, the file is written to the
MQ_DATA_PATH/mqft/logs/coordination_qmgr_name/agents/agent_name
directory.
On z/OS, the file is
written to the z/OS UNIX location
$BFG_CONFIG/mqft/logs/coordination_qmgr_name/agents/agent_name
directory. - A Java snap dump. The name of this file has the
following format:
snap.datestamp.timestamp.pid.identifier.txt
On Multiplatforms, the file is written to the
MQ_DATA_PATH/mqft/logs/coordination_qmgr_name/agents/agent_name
directory.
On z/OS, the file is
written to the z/OS UNIX location
$BFG_CONFIG/mqft/logs/coordination_qmgr_name/agents/agent_name
directory.
The ABEND and Javacore pair contain information similar to the examples shown below:
Filename: C:\ProgramData\IBM\MQ\mqft\logs\QM1\agents\AGENT1\logs\ffdc\ABEND.FTE.20220810102649225.189381242111774453.log
Level: p920-005-220208
Time: 10/08/2022 10:26:49:225 BST
Thread: 45 (FileIOWorker-0:0)
Class: com.ibm.wmqfte.thread.FTEThread
Instance: a393304f
Method: uncaughtException
Probe: ABEND_001
Cause: java.lang.OutOfMemoryError: Java heap space
java.lang.OutOfMemoryError: Java heap space
at java.nio.HeapByteBuffer.<init>(HeapByteBuffer.java:57)
at java.nio.ByteBuffer.allocate(ByteBuffer.java:335)
at com.ibm.wmqfte.util.impl.ByteBufferPoolImpl.getBuffer(ByteBufferPoolImpl.java:44)
at com.ibm.wmqfte.transfer.frame.impl.TransferChunkImpl.getByteBuffer(TransferChunkImpl.java:181)
at com.ibm.wmqfte.transfer.frame.impl.TransferChunkImpl.<init>(TransferChunkImpl.java:143)
at com.ibm.wmqfte.transfer.frame.impl.TransferFrameSenderImpl.requestChunk(TransferFrameSenderImpl.java:636)
at com.ibm.wmqfte.transfer.frame.impl.TransferFrameSenderImpl.access$000(TransferFrameSenderImpl.java:100)
at com.ibm.wmqfte.transfer.frame.impl.TransferFrameSenderImpl$ChunkRequester.processFileIORequest(TransferFrameSenderImpl.java:142)
at com.ibm.wmqfte.transfer.frame.impl.TransferFrameIOWorker.doWorkImpl(TransferFrameIOWorker.java:318)
at com.ibm.wmqfte.io.impl.FTEFileIOWorker.doWork(FTEFileIOWorker.java:118)
at com.ibm.wmqfte.io.impl.FTEFileIORequestQueue.run(FTEFileIORequestQueue.java:244)
at java.lang.Thread.run(Thread.java:825)
at com.ibm.wmqfte.thread.FTEThread.run(FTEThread.java:70)
0SECTION TITLE subcomponent dump routine
NULL ===============================
1TICHARSET 437
1TISIGINFO Dump Event "systhrow" (00040000) Detail "java/lang/OutOfMemoryError" "Java heap space" received
1TIDATETIMEUTC Date: 2022/08/10 at 09:26:53:917 (UTC)
1TIDATETIME Date: 2022/08/10 at 10:26:53:917
1TITIMEZONE Timezone: (unavailable)
1TINANOTIME System nanotime: 350635184939400
1TIFILENAME Javacore filename: C:\ProgramData\IBM\MQ\mqft\logs\QM1\agents\AGENT1\javacore.20220810.102653.7172.0003.txt
This issue occurs because of exhaustion of the Java heap memory for the JVM running the agent.
See How MFT agents use Java heap and native heap memory for more information on the distinctions between Java heap memory and native heap memory.
To help reduce the likelihood of this issue occurring, complete the following steps: