The thread dumps shows the threads being blocked as follows :
a) java.lang.Thread.State: BLOCKED (on object monitor) at org.apache.log4j.Category.callAppenders(Category.java:204) - waiting to lock <0x00000006cda82ac0> (a org.apache.log4j.spi.RootLogger) at org.apache.log4j.Category.forcedLog(Category.java:391) at org.apache.log4j.Category.log(Category.java:826) at com.tibco.cep.runtime.service.logging.impl.LoggerImpl.log(LoggerImpl.java:93) at com.tibco.cep.driver.jms.JMSDestination$JMSListener.onMessage(SourceFile:1074) at com.tibco.tibjms.TibjmsxSessionImp._submit(TibjmsxSessionImp.java:4165) at com.tibco.tibjms.TibjmsxSessionImp._dispatchAsyncMessage(TibjmsxSessionImp.java:2267) at com.tibco.tibjms.TibjmsxSessionImp$Dispatcher.run(TibjmsxSessionImp.java:3689)
java.lang.Thread.State: BLOCKED (on object monitor) at org.apache.log4j.Category.callAppenders(Category.java:204) - waiting to lock <0x00000006cda82ac0> (a org.apache.log4j.spi.RootLogger) at org.apache.log4j.Category.forcedLog(Category.java:391) at org.apache.log4j.Category.log(Category.java:838) at com.tibco.cep.runtime.service.logging.impl.LoggerImpl.log(LoggerImpl.java:69) at com.tibco.be.functions.System.SystemHelper.debugOut(SourceFile:48) at be.gen.RuleFunctions.Log.nullLogStringString$.Log(nullLogStringString$.java:16) at be.gen.RuleFunctions.VoltageRMS.nullUpdateOpenEvent$oversizeName.UpdateOpenEvent
Cause: ====== By setting the queue size to 0 in the destination config means an unlimited queue size so all the messages that should be queuing up in EMS are being copied into BE's memory causing the Outof memory Exceptions.
Resolution: ========= Tuning the queue size and num of threads to approriate values resolved the issue.
calculation: queuSize = numThreads * 128 numThreads= number of cpu cores
Issue/Introduction
TIBCO BusinessEvents engine after running for some time hangs with an out of memory error.