Java Weblogic文件存储中的OutOfMemoryError

Java Weblogic文件存储中的OutOfMemoryError,java,file-io,jms,weblogic,out-of-memory,Java,File Io,Jms,Weblogic,Out Of Memory,我试图将我的应用程序强调到Weblogic11g中,并在队列上向它发送许多JMS消息 但是,文件存储崩溃时,OOE大约为20K条消息,最大大小为647169 ko Exception in thread "Thread-13" java.lang.OutOfMemoryError: Java heap space at java.nio.HeapByteBuffer.<init>(HeapByteBuffer.java:39) at j

我试图将我的应用程序强调到Weblogic11g中,并在队列上向它发送许多JMS消息

但是,文件存储崩溃时,OOE大约为20K条消息,最大大小为647169 ko

Exception in thread "Thread-13" java.lang.OutOfMemoryError: Java heap space
            at java.nio.HeapByteBuffer.<init>(HeapByteBuffer.java:39)
            at java.nio.ByteBuffer.allocate(ByteBuffer.java:312)
            at weblogic.store.io.file.StoreFile.expand(StoreFile.java:324)
            at weblogic.store.io.file.Heap.reserveSpace(Heap.java:305)
            at weblogic.store.io.file.Heap.multiWrite(Heap.java:438)
            at weblogic.store.io.file.FileStoreIO.flush(FileStoreIO.java:497)
            at weblogic.store.internal.PersistentStoreImpl.run(PersistentStoreImpl.java:638)
            at weblogic.store.internal.PersistentStoreImpl$2.run(PersistentStoreImpl.java:383)
线程“thread-13”java.lang.OutOfMemoryError中的异常:java堆空间 位于java.nio.HeapByteBuffer。(HeapByteBuffer.java:39) 位于java.nio.ByteBuffer.allocate(ByteBuffer.java:312) 位于weblogic.store.io.file.StoreFile.expand(StoreFile.java:324) 位于weblogic.store.io.file.Heap.reserveSpace(Heap.java:305) 位于weblogic.store.io.file.Heap.multiWrite(Heap.java:438) 位于weblogic.store.io.file.FileStoreIO.flush(FileStoreIO.java:497) 在weblogic.store.internal.PersistentStoreImpl.run(PersistentStoreImpl.java:638) 在weblogic.store.internal.PersistentStoreImpl$2.run(PersistentStoreImpl.java:383) 还有几行日志文件

2014年2月25日下午7:53:19 CET警告JTA BEA-110484 JTA健康状态已从健康状态更改为健康状态警告,原因代码为:Resource WLStore_MyFS_stores-Node1-file-jms宣布不健康

2014年2月25日下午7:53:19 CET警告JTA BEA-110030 XA资源[WLStore_MyFS_stores-Node1-file-jms]在最近120秒内未响应

2014年2月25日下午7:53:19 CET警告JTA BEA-110405资源WLStore_MyFS_stores-Node1-file-jms未分配给以下任何服务器:Node1

2014年2月25日下午7:54:19 CET警告JTA BEA-110486事务BEA1-5DA4B1F8A57C83AEDB1B无法完成提交处理,因为资源[WLStore_MyFS_stores-Node1-file-jms]不可用。除非所有资源都确认提交决定,否则事务将在3420秒后放弃


是否可以增加此文件存储的大小?

尝试通过在服务器启动参数或启动脚本中为-Xmx参数提供更大的值来增加托管服务器的堆分配


有关更多详细信息,请参阅

通过在服务器启动参数或启动脚本中为-Xmx参数提供更大的值,尝试增加托管服务器的堆分配


有关更多详细信息,请参阅

当向WLS发送消息时,它会将消息+标头保留在内存中,直到消息被消费。 如果您的消息生成速率快于消息消耗速率,那么您最终将遇到OOM

有两件事你可以做,以避免得到OOM

1) 确保您有足够的消费者接收邮件,并且他们能够快速接收邮件

2) 默认情况下,当JMS消息的内存消耗约为整个堆的1/3时,会触发JMS分页功能。如果需要,您可以调整服务器以提前触发分页。分页所做的是,它将每条消息的头部分留在内存中,而正文移动到分页文件,从而释放一些内存。对于过于简单的计算,JMS头只会消耗大约1k的内存。 -注意:挂起的消息将在内存中同时包含标题和正文


3) 当然,增加托管JMS服务器的托管服务器的JVM大小将直接使您能够在内存中保留更多消息。

向WLS发送消息时,它会将消息+标头保留在内存中,直到消息被消耗为止。 如果您的消息生成速率快于消息消耗速率,那么您最终将遇到OOM

有两件事你可以做,以避免得到OOM

1) 确保您有足够的消费者接收邮件,并且他们能够快速接收邮件

2) 默认情况下,当JMS消息的内存消耗约为整个堆的1/3时,会触发JMS分页功能。如果需要,您可以调整服务器以提前触发分页。分页所做的是,它将每条消息的头部分留在内存中,而正文移动到分页文件,从而释放一些内存。对于过于简单的计算,JMS头只会消耗大约1k的内存。 -注意:挂起的消息将在内存中同时包含标题和正文


3) 当然,增加托管JMS服务器的托管服务器的JVM大小将直接使您能够在内存中保留更多消息。

Hm,您认为我需要增加AdminServer上的堆大小吗?好的,我试试看。(因为我的节点上的堆大小是2Go)如果日志来自管理服务器,那么堆应该增加。嗯,你认为我需要增加管理服务器上的堆大小?好的,我试试看。(因为我的节点上的堆大小是2Go)如果日志来自管理服务器,那么堆应该增加。没错!今天我解决了我的问题。我已经将许多消息放入了一个挂起的队列中,所以正如您所说,每个消息都被放入了堆内存中。谢谢,没错!今天我解决了我的问题。我已经将许多消息放入了一个挂起的队列中,所以正如您所说,每个消息都被放入了堆内存中。非常感谢。