Hi, I came across out of memory exception while doing long running test on mb cluster with oracle database as message store. Following was the scenario i tested.
1. Start two clustered mb nodes with serializers (nodeA(coordinator), nodeB). 2. Add queue subscriber "MyQueue1", to nodeB and publish "MyQueue1" messages to nodeA with average 1500 TPS. 3. Add queue subscriber "MyQueue2" to nodeA and publish "MyQueue2" messages to nodeB with average 1000 TPS. 4. After around 14 hours, om exception has thrown from nodeA and all operations has halted. After analysing heap dump i found which thread has thrown the error, and it's as follows. "pool-25-thread-1" prio=5 tid=174 RUNNABLE at java.lang.OutOfMemoryError.<init>(OutOfMemoryError.java:48) at java.lang.Long.toString(Long.java:267) at com.google.gson.stream.JsonReader.nextString(JsonReader.java:816) at com.google.gson.internal.bind.TypeAdapters$25.read(TypeAdapters.java:648) at com.google.gson.internal.bind.TypeAdapters$25.read(TypeAdapters.java:659) Local Variable: com.google.gson.internal.bind.TypeAdapters$25#1 Local Variable: com.google.gson.JsonArray#1 at com.google.gson.internal.bind.TypeAdapters$25.read(TypeAdapters.java:642) at com.google.gson.internal.Streams.parse(Streams.java:44) at com.google.gson.JsonParser.parse(JsonParser.java:84) at com.google.gson.JsonParser.parse(JsonParser.java:59) Local Variable: com.google.gson.stream.JsonReader#1 at com.google.gson.JsonParser.parse(JsonParser.java:45) at org.wso2.andes.server.cluster.coordination.hazelcast.custom.serializer.TreeSetLongWrapperSerializer.read(TreeSetLongWrapperSerializer.java:53) at org.wso2.andes.server.cluster.coordination.hazelcast.custom.serializer.TreeSetLongWrapperSerializer.read(TreeSetLongWrapperSerializer.java:33) at com.hazelcast.nio.serialization.StreamSerializerAdapter.read(StreamSerializerAdapter.java:59) Local Variable: com.hazelcast.nio.serialization.ByteArrayObjectDataInput#1 at com.hazelcast.nio.serialization.SerializationServiceImpl.toObject(SerializationServiceImpl.java:221) at com.hazelcast.spi.impl.NodeEngineImpl.toObject(NodeEngineImpl.java:156) at com.hazelcast.map.MapService.toObject(MapService.java:872) at com.hazelcast.map.proxy.MapProxyImpl.get(MapProxyImpl.java:53) at org.wso2.andes.kernel.slot.SlotManagerClusterMode.updateMessageID(SlotManagerClusterMode.java:347) Local Variable: java.util.TreeSet#1 at org.wso2.andes.thrift.SlotManagementServiceImpl.updateMessageId(SlotManagementServiceImpl.java:56) Local Variable: java.lang.String#2380 Local Variable: java.lang.String#2379 at org.wso2.andes.thrift.slot.gen.SlotManagementService$Processor$updateMessageId.getResult(SlotManagementService.java:440) Local Variable: org.wso2.andes.thrift.slot.gen.SlotManagementService$updateMessageId_result#2 at org.wso2.andes.thrift.slot.gen.SlotManagementService$Processor$updateMessageId.getResult(SlotManagementService.java:429) Local Variable: org.wso2.andes.thrift.slot.gen.SlotManagementService$updateMessageId_args#1 Local Variable: org.wso2.andes.thrift.SlotManagementServiceImpl#1 at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:32) Local Variable: org.wso2.andes.thrift.slot.gen.SlotManagementService$Processor$updateMessageId#1 at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:34) at org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run(TThreadPoolServer.java:176) Local Variable: org.apache.thrift.transport.TSocket#2 Local Variable: org.apache.thrift.protocol.TBinaryProtocol#2 Local Variable: org.apache.thrift.protocol.TBinaryProtocol#3 Local Variable: org.wso2.andes.thrift.slot.gen.SlotManagementService$Processor#1 at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) Local Variable: org.apache.thrift.server.TThreadPoolServer$WorkerProcess#1 Local Variable: java.util.concurrent.ThreadPoolExecutor#26 at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) Local Variable: java.util.concurrent.ThreadPoolExecutor$Worker#41 at java.lang.Thread.run(Thread.java:745) Have anyone faced similar issue ? What is the best method to handle this out of memory issue? Thanks, -- Pumudu Ruhunage Associate Software Engineer | WSO2 Inc M: +94 779 664493 | http://wso2.com
_______________________________________________ Dev mailing list Dev@wso2.org http://wso2.org/cgi-bin/mailman/listinfo/dev