【问题标题】:Out Of Memory in IBM Websphere 8.5.5.7IBM Websphere 8.5.5.7 内存不足
【发布时间】:2016-02-10 01:41:03
【问题描述】:

我提出一个关于 IBM Websphere 8.5.5.7 内存不足的问题......我们有一个应用程序,主要是部署在 IBM WAS 8.5.5.7 中的 Spring RestFull Webservices 应用程序。过去 5 天出现以下内存不足错误

[2/3/16 13:12:51:651 EST] 000000ab BBFactoryImpl E   CWOBB9999E: Something unexpected happened; the data (if any) is <null> and the exception (if any) is java.lang.OutOfMemoryError: Java heap space at 
com.ibm.oti.vm.VM.getClassNameImpl(Native Method) at 
com.ibm.oti.vm.AbstractClassLoader.getPackageName(AbstractClassLoader.java:384) at 
com.ibm.oti.vm.BootstrapClassLoader.loadClass(BootstrapClassLoader.java:65) at 
java.lang.ClassLoader.loadClassHelper(ClassLoader.java:691) at 
java.lang.ClassLoader.loadClass(ClassLoader.java:680) at 
java.lang.ClassLoader.loadClassHelper(ClassLoader.java:693) at 
java.lang.ClassLoader.loadClass(ClassLoader.java:680) at 
sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:358) at 
java.lang.ClassLoader.loadClass(ClassLoader.java:663) at 
org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:502) at 
org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:422) at 
org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:410) at 
org.eclipse.osgi.internal.loader.buddy.RegisteredPolicy.loadClass(RegisteredPolicy.java:79) at 
org.eclipse.osgi.internal.loader.buddy.PolicyHandler.doBuddyClassLoading(PolicyHandler.java:135) at 
org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:494) at 
org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:422) at 
org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:410) at 
org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107) at 
java.lang.ClassLoader.loadClassHelper(ClassLoader.java:693) at 
java.lang.ClassLoader.loadClass(ClassLoader.java:680) at 
java.lang.ClassLoader.loadClass(ClassLoader.java:663) at 
sun.reflect.DelegatingClassLoader.loadClass(DelegatingClassLoader.java:51) at 
sun.misc.Unsafe.defineClass(Native Method) at 
sun.reflect.ClassDefiner.defineClass(ClassDefiner.java:57) at sun.reflect.MethodAccessorGenerator$1.run(MethodAccessorGenerator.java:437) at 
java.security.AccessController.doPrivileged(AccessController.java:363) at 
sun.reflect.MethodAccessorGenerator.generate(MethodAccessorGenerator.java:433) at 
sun.reflect.MethodAccessorGenerator.generateSerializationConstructor(MethodAccessorGenerator.java:149) at 
sun.reflect.ReflectionFactory.newConstructorForSerialization(ReflectionFactory.java:316) at 
java.io.ObjectStreamClass.getSerializableConstructor(ObjectStreamClass.java:1409) at 
java.io.ObjectStreamClass.access$1500(ObjectStreamClass.java:63) at 
java.io.ObjectStreamClass$2.run(ObjectStreamClass.java:515) at 
java.security.AccessController.doPrivileged(AccessController.java:363) at 
java.io.ObjectStreamClass.<init>(ObjectStreamClass.java:491) at 
java.io.ObjectStreamClass.lookup(ObjectStreamClass.java:338) at 
java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:625) at 
java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1619) at 
java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1514) at 
java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1619) at 
java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1514) at 
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1768) at 
java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347) at 
java.io.ObjectInputStream.readObject(ObjectInputStream.java:364) at 
com.ibm.son.util.Util.deserialize(Util.java:434) at 
com.ibm.son.mesh.AbstractTCPImpl.procReceivedMessage(AbstractTCPImpl.java:478) at 
com.ibm.son.mesh.CfwTCPImpl.completedRead(CfwTCPImpl.java:1248) at 
com.ibm.son.mesh.CfwTCPImpl.complete(CfwTCPImpl.java:1061) at 
com.ibm.ws.ssl.channel.impl.SSLReadServiceContext$SSLReadCompletedCallback.complete(SSLReadServiceContext.java:1818) at 
com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:175) at 
com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217) at 
com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161) at 
com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:138) at 
com.ibm.io.async.ResultHandler.complete(ResultHandler.java:204) at 
com.ibm.io.async.ResultHandler.runEventProces

在 Introscope 和 Heap Analyzer 上对堆转储进行分析 据观察,IBM stax 解析器和 WAS 使用的 com/ibm/xml/xlxp2/scan/util/SimpleDataBufferFactory 始终占用了大部分内存 (>60%) Introscope 分析揭示了发生 OOM 时线程数、内存使用量和连接数逐渐增加的突然峰值。

在检查 com.ibm.xml.xlxp2.scan.util.Databuffer 占用更多堆大小的问题时,可以看到 IBM 一直在修复属于 com.ibm.xml.xlxp.scan.util/com.ibm.xml 的类的内存不足问题。 xlxp2.scan.util 在 WAS 6、WAS 7 和 WAS 8 服务器中。

http://www-01.ibm.com/support/docview.wss?uid=swg1PM39346 http://www-01.ibm.com/support/docview.wss?uid=swg1PM08333

任何人都可以分享任何想法,这是否是 IBM WAS 8.5.5.7 的问题...无法彻底解决

【问题讨论】:

标签: websphere


【解决方案1】:

许多与 com.ibm.xml.xlxp2.scan.util.DataBuffer 相关的内存不足问题已通过系统属性得到解决,用户可以配置这些属性以减少 IBM StAX 解析器使用的内存。

以下系统属性有助于解决 IBM StAX 解析器的内存不足问题。它们中的每一个都应该在 WebSphere Application Server v8.5.5.7 中可用。

com.ibm.xml.xlxp2.api.util.encoding.DataSourceFactory.bufferLength

控制 StAX 解析器数据缓冲区大小的系统属性。默认值为 65536。

如果 64KB 缓冲区在使用时仅由 InputStream 部分填充,则将此属性设置为较小的值(例如 2048)可能会减少内存使用量。缓冲区缓存在 StAX 解析器中(在 com/ibm/xml/xlxp2/scan/util/SimpleDataBufferFactory 内),因此减少内存使用会减少链接到每个 StAX 解析器对象的总内存。

com.ibm.xml.xlxp2.api.util.Pool.STRONG_REFERENCE_POOL_MAXIMUM_SIZE

系统属性(由 APAR PM42465 引入)限制将使用强引用缓存的 XMLStreamReader(和 XMLStreamWriter)的数量。按照链接中提供的有关如何设置此属性的说明进行操作。

com.ibm.xml.xlxp2.api.util.encoding.DataSourceFactory.bufferLoadFactor

此系统属性的值是一个非负整数,它确定将加载到每个缓冲区中的最小字节数(以百分比表示)。百分比的计算公式如下:1 / (2^n)。

当系统属性未设置时,其默认值为3。将该属性设置为低于默认值的值可以提高内存使用率,但也可能会降低吞吐量。

com.ibm.xml.xlxp2.scan.util.SymbolMap.maxSymbolCount

系统属性(由 APAR PI08415 引入)。该属性的值是一个非负整数,它决定了 StAX 解析器符号图的最大尺寸。按照链接中提供的有关如何设置此属性的说明进行操作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-04
    • 2014-10-15
    • 1970-01-01
    • 1970-01-01
    • 2011-10-22
    相关资源
    最近更新 更多