简体   繁体   English

WSO2 API Manager 3.2.0 频繁出现 OOM 错误

[英]Frequent OOM Error with WSO2 API Manager 3.2.0

We are getting frequent OOM Error with WSO2 API Manager 3.2.0. WSO2 API Manager 3.2.0 经常出现 OOM 错误。 The OOM Error is in-fact not due to insufficient heap space but rather is explicitly generated at run time while creating a byte[] of an un-acceptable size viz. OOM 错误实际上不是由于堆空间不足,而是在运行时显式生成,同时创建大小不可接受的 byte[] 即。 INTEGER.MAX value as evident from the heap dumps where we are getting stack trace for OOM Error as given below从堆转储中可以明显看出 INTEGER.MAX 值,我们在其中获取 OOM 错误的堆栈跟踪,如下所示

Can someone suggest what can be possible reason here?有人可以建议这里可能是什么原因吗?

PassThroughMessageProcessor-301" prio=5 tid=2866 RUNNABLE
at java.lang.OutOfMemoryError.<init>(OutOfMemoryError.java:48)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:239)
   local variable: org.apache.synapse.commons.json.JsonUtil$ReadOnlyBIS#1
   local variable: byte[]#859071
at java.io.BufferedInputStream.read1(BufferedInputStream.java:292)
   local variable: org.apache.synapse.commons.json.JsonUtil$ReadOnlyBIS#1
   local variable: byte[]#680420
at java.io.BufferedInputStream.read(BufferedInputStream.java:351)
   local variable: org.apache.synapse.commons.json.JsonUtil$ReadOnlyBIS#1
   local variable: byte[]#680420
at java.io.FilterInputStream.read(FilterInputStream.java:107)
at org.apache.commons.io.IOUtils.copyLarge(IOUtils.java:1792)
   local variable: org.apache.synapse.commons.json.JsonUtil$ReadOnlyBIS#1
   local variable: org.apache.synapse.transport.passthru.Pipe$ByteBufferOutputStream#1
   local variable: byte[]#680420
at org.apache.commons.io.IOUtils.copyLarge(IOUtils.java:1769)
at org.apache.commons.io.IOUtils.copy(IOUtils.java:1744)
at org.apache.synapse.commons.json.JsonUtil.writeJsonStream(JsonUtil.java:1168)
   local variable: org.apache.synapse.commons.json.JsonUtil$ReadOnlyBIS#1
   local variable: org.apache.axis2.context.MessageContext#50
at org.apache.synapse.commons.json.JsonUtil.writeAsJson(JsonUtil.java:378)
   local variable: org.apache.synapse.commons.json.JsonUtil$ReadOnlyBIS#1
at org.apache.synapse.commons.json.JsonStreamFormatter.writeTo(JsonStreamFormatter.java:70)
   local variable: org.apache.axis2.context.MessageContext#50
at org.apache.synapse.transport.passthru.PassThroughHttpSender.sendRequestContent(PassThroughHttpSender.java:414)
   local variable: org.apache.synapse.transport.passthru.PassThroughHttpSSLSender#1
   local variable: org.apache.synapse.transport.passthru.Pipe#23
at org.apache.synapse.transport.passthru.PassThroughHttpSender.invoke(PassThroughHttpSender.java:277)
   local variable: org.apache.axis2.context.MessageContext#50
at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:442)
   local variable: org.apache.axis2.context.MessageContext#50
   local variable: com.dynatrace.agent.TraceTag#868
at org.apache.synapse.core.axis2.DynamicAxisOperation$DynamicOperationClient.send(DynamicAxisOperation.java:185)
   local variable: org.apache.synapse.core.axis2.DynamicAxisOperation$DynamicOperationClient#1
   local variable: org.apache.axis2.context.MessageContext#50
   local variable: org.apache.axis2.context.MessageContext#51
at org.apache.synapse.core.axis2.DynamicAxisOperation$DynamicOperationClient.executeImpl(DynamicAxisOperation.java:167)
at org.apache.axis2.client.OperationClient.execute(OperationClient.java:149)
at org.apache.synapse.core.axis2.Axis2FlexibleMEPClient.send(Axis2FlexibleMEPClient.java:656)
at org.apache.synapse.core.axis2.Axis2Sender.sendOn(Axis2Sender.java:86)
   local variable: org.apache.synapse.core.axis2.Axis2MessageContext#5
at org.apache.synapse.core.axis2.Axis2SynapseEnvironment.send(Axis2SynapseEnvironment.java:573)
at org.apache.synapse.endpoints.AbstractEndpoint.send(AbstractEndpoint.java:409)
   local variable: org.apache.synapse.endpoints.HTTPEndpoint#97
   local variable: org.apache.synapse.core.axis2.Axis2MessageContext#5
at org.apache.synapse.endpoints.HTTPEndpoint.send(HTTPEndpoint.java:100)
at org.apache.synapse.endpoints.IndirectEndpoint.send(IndirectEndpoint.java:56)
at org.apache.synapse.mediators.builtin.SendMediator.mediate(SendMediator.java:123)
   local variable: org.apache.synapse.mediators.MediatorLog#1
at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:109)
   local variable: org.apache.synapse.config.xml.AnonymousListMediator#187
   local variable: org.apache.synapse.core.axis2.Axis2MessageContext#5
   local variable: org.apache.synapse.mediators.MediatorLog#2
at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:71)
at org.apache.synapse.config.xml.AnonymousListMediator.mediate(AnonymousListMediator.java:37)
at org.apache.synapse.mediators.filters.FilterMediator.mediate(FilterMediator.java:205)
   local variable: org.apache.synapse.core.axis2.Axis2MessageContext#5
at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:109)
   local variable: org.apache.synapse.mediators.base.SequenceMediator#403
   local variable: org.apache.synapse.core.axis2.Axis2MessageContext#5
   local variable: org.apache.synapse.mediators.MediatorLog#3
at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractListMediator.java:71)
at org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMediator.java:158)
   local variable: org.apache.synapse.mediators.base.SequenceMediator#403
   local variable: org.apache.synapse.core.axis2.Axis2MessageContext#5
   local variable: org.apache.synapse.mediators.MediatorLog#4
at org.apache.synapse.rest.Resource.process(Resource.java:331)
   local variable: org.apache.synapse.rest.Resource#186
   local variable: org.apache.synapse.core.axis2.Axis2MessageContext#5
at org.apache.synapse.rest.API.process(API.java:447)
at org.apache.synapse.rest.RESTRequestHandler.apiProcessNonDefaultStrategy(RESTRequestHandler.java:144)
at org.apache.synapse.rest.RESTRequestHandler.identifyAPI(RESTRequestHandler.java:164)
at org.apache.synapse.rest.RESTRequestHandler.dispatchToAPI(RESTRequestHandler.java:95)
   local variable: org.apache.synapse.rest.RESTRequestHandler#1
   local variable: org.apache.synapse.core.axis2.Axis2MessageContext#5
   local variable: java.util.ArrayList#139741
at org.apache.synapse.rest.RESTRequestHandler.process(RESTRequestHandler.java:73)
at org.apache.synapse.core.axis2.Axis2SynapseEnvironment.injectMessage(Axis2SynapseEnvironment.java:331)
   local variable: org.apache.synapse.core.axis2.Axis2MessageContext#5
at org.apache.synapse.core.axis2.SynapseMessageReceiver.receive(SynapseMessageReceiver.java:99)
   local variable: org.apache.synapse.core.axis2.SynapseMessageReceiver#1
   local variable: org.apache.synapse.core.axis2.Axis2MessageContext#5
at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180)
   local variable: org.apache.axis2.context.MessageContext#52
at org.apache.synapse.transport.passthru.ServerWorker.processNonEntityEnclosingRESTHandler(ServerWorker.java:367)
   local variable: org.apache.synapse.transport.passthru.ServerWorker#18
at org.apache.synapse.transport.passthru.ServerWorker.processEntityEnclosingRequest(ServerWorker.java:426)
   local variable: org.apache.synapse.transport.passthru.ServerWorker#18
   local variable: com.dynatrace.agent.TraceTag#868
at org.apache.synapse.transport.passthru.ServerWorker.run(ServerWorker.java:181)
   local variable: org.apache.synapse.transport.passthru.ServerWorker#18
at org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:172)
   local variable: org.apache.axis2.transport.base.threads.NativeWorkerPool$1#6
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
   local variable: org.apache.axis2.transport.base.threads.Axis2ThreadPoolExecutor#1
   local variable: java.util.concurrent.ThreadPoolExecutor$Worker#908
   local variable: java.lang.Thread#981
   local variable: org.apache.axis2.transport.base.threads.NativeWorkerPool$1#6
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.lang.Thread.run(Thread.java:834)

BufferedInputStream.java line #239 infact is BufferedInputStream.java 行 #239 实际上是

byte[] nbuf = new byte[nsz]; 

It is not possible to find a exact root case with the given thread stack trace.无法使用给定的线程堆栈跟踪找到确切的根本案例。 This may be the thread complaining about the OOM but who is not utilizing the heap memory.这可能是抱怨 OOM 但未使用堆内存的线程。 If the server is experiencing an OOM you may find the self generated heap dump as /repository/logs/heap-dump.hprof file.如果服务器遇到 OOM,您可能会发现自生成的堆转储为 /repository/logs/heap-dump.hprof 文件。 This dump needs to be investigated to find a possible memory leak or components that are consuming more heap memory which might lead to an OOM issue.需要调查此转储以查找可能的内存泄漏或消耗更多堆内存的组件,这可能会导致 OOM 问题。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM