Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Infinispan:java.lang.OutOfMemoryError:java堆空间_Java_Jboss_Infinispan - Fatal编程技术网

Infinispan:java.lang.OutOfMemoryError:java堆空间

Infinispan:java.lang.OutOfMemoryError:java堆空间,java,jboss,infinispan,Java,Jboss,Infinispan,我正在运行一个JBoss7HA集群,它有4个节点,跨越2台服务器。从几个星期开始,以下异常会偶尔抛出,有时一天抛出2或3次,然后一周抛出1或2次。看起来,当有更多的用户处于活动状态时,抛出异常的可能性更高 21:38:24,337 ERROR [org.infinispan.remoting.ReplicationQueue] (Scheduled-replicationQueue-thread-0) [, , ] ISPN000072: Failed replicating 3 elemen

我正在运行一个JBoss7HA集群,它有4个节点,跨越2台服务器。从几个星期开始,以下异常会偶尔抛出,有时一天抛出2或3次,然后一周抛出1或2次。看起来,当有更多的用户处于活动状态时,抛出异常的可能性更高

 21:38:24,337 ERROR [org.infinispan.remoting.ReplicationQueue] (Scheduled-replicationQueue-thread-0) [, , ] ISPN000072: Failed replicating 3 elements in replication queueorg.infinispan.CacheException: java.lang.OutOfMemoryError: Java heap space
      at org.infinispan.remoting.rpc.RpcManagerImpl.invokeRemotely(RpcManagerImpl.java:166) [infinispan-core-5.1.0.BETA5.jar:]
      at org.infinispan.remoting.rpc.RpcManagerImpl.invokeRemotely(RpcManagerImpl.java:181) [infinispan-core-5.1.0.BETA5.jar:]
      at org.infinispan.remoting.ReplicationQueueImpl.flush(ReplicationQueueImpl.java:159) [infinispan-core-5.1.0.BETA5.jar:]
      at org.infinispan.remoting.ReplicationQueueImpl$1.run(ReplicationQueueImpl.java:112) [infinispan-core-5.1.0.BETA5.jar:]
      at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441) [:1.6.0_29]
      at java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:317) [:1.6.0_29]
      at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:150) [:1.6.0_29]
      at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(ScheduledThreadPoolExecutor.java:98) [:1.6.0_29]
      at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodic(ScheduledThreadPoolExecutor.java:180) [:1.6.0_29]
      at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:204) [:1.6.0_29]
      at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) [:1.6.0_29]
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) [:1.6.0_29]
      at java.lang.Thread.run(Thread.java:662) [:1.6.0_29] Caused by: java.lang.OutOfMemoryError: Java heap space
      at org.infinispan.io.ExposedByteArrayOutputStream.write(ExposedByteArrayOutputStream.java:104) [infinispan-api-5.1.0.BETA5.jar:]
      at java.io.FilterOutputStream.write(FilterOutputStream.java:60) [:1.6.0_29]
      at java.io.FilterOutputStream.write(FilterOutputStream.java:108) [:1.6.0_29]
      at org.jboss.marshalling.SimpleDataOutput.write(SimpleDataOutput.java:83) [jboss-marshalling-1.3.4.GA.jar:]
      at org.infinispan.marshall.exts.CacheRpcCommandExternalizer.writeObject(CacheRpcCommandExternalizer.java:113) [infinispan-core-5.1.0.BETA5.jar:]
      at org.infinispan.marshall.exts.CacheRpcCommandExternalizer.writeObject(CacheRpcCommandExternalizer.java:66) [infinispan-core-5.1.0.BETA5.jar:]
      at org.infinispan.marshall.jboss.ExternalizerTable$ExternalizerAdapter.writeObject(ExternalizerTable.java:389) [infinispan-core-5.1.0.BETA5.jar:]
      at org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:145)
      at org.jboss.marshalling.AbstractObjectOutput.writeObject(AbstractObjectOutput.java:62) [jboss-marshalling-1.3.4.GA.jar:]
      at org.jboss.marshalling.AbstractMarshaller.writeObject(AbstractMarshaller.java:119) [jboss-marshalling-1.3.4.GA.jar:]
      at org.infinispan.marshall.jboss.AbstractJBossMarshaller.objectToObjectStream(AbstractJBossMarshaller.java:59) [infinispan-commons-5.1.0.BETA5.jar:]
      at org.infinispan.marshall.VersionAwareMarshaller.objectToBuffer(VersionAwareMarshaller.java:91) [infinispan-core-5.1.0.BETA5.jar:]
      at org.infinispan.marshall.AbstractMarshaller.objectToBuffer(AbstractMarshaller.java:57) [infinispan-commons-5.1.0.BETA5.jar:]
      at org.infinispan.marshall.AbstractDelegatingMarshaller.objectToBuffer(AbstractDelegatingMarshaller.java:84) [infinispan-commons-5.1.0.BETA5.jar:]
      at org.infinispan.remoting.transport.jgroups.MarshallerAdapter.objectToBuffer(MarshallerAdapter.java:45) [infinispan-core-5.1.0.BETA5.jar:]
      at org.infinispan.remoting.transport.jgroups.CommandAwareRpcDispatcher$ReplicationTask.marshallCall(CommandAwareRpcDispatcher.java:211) [infinispan-core-5.1.0.BETA5.jar:]
      at org.infinispan.remoting.transport.jgroups.CommandAwareRpcDispatcher$ReplicationTask.call(CommandAwareRpcDispatcher.java:232) [infinispan-core-5.1.0.BETA5.jar:]
      at org.infinispan.remoting.transport.jgroups.CommandAwareRpcDispatcher.invokeRemoteCommands(CommandAwareRpcDispatcher.java:110) [infinispan-core-5.1.0.BETA5.jar:]
      at org.infinispan.remoting.transport.jgroups.JGroupsTransport.invokeRemotely(JGroupsTransport.java:411) [infinispan-core-5.1.0.BETA5.jar:]
      at org.infinispan.remoting.rpc.RpcManagerImpl.invokeRemotely(RpcManagerImpl.java:153) [infinispan-core-5.1.0.BETA5.jar:]
      ... 12 more
我已经尝试将host.xml中的JVM堆和permgen大小增加到8/16 GB,但没有成功

 <jvms>
      <jvm name="default">
           <heap size="16g" max-size="16g"/>
           <permgen size="8g" max-size="8g"/>
      </jvm>
 </jvms>

有什么想法吗?或者是否有可能增加Infispan堆大小?

内存泄漏(最有可能)或发生了大量调用

内存泄漏情况下的Stacktrace可能与内存泄漏无关。它显示了什么是折断骆驼背部的稻草

添加“-XX:+HeapDumpOnOutOfMemoryError”的JVM参数以获取堆转储可能有助于找到真正的原因

此外,Perm Gen可能会从8gb无害地减少到几百MB,这与系统遇到的内存不足错误无关。

内存泄漏(最有可能)或发生大量调用

内存泄漏情况下的Stacktrace可能与内存泄漏无关。它显示了什么是折断骆驼背部的稻草

添加“-XX:+HeapDumpOnOutOfMemoryError”的JVM参数以获取堆转储可能有助于找到真正的原因


此外,Perm Gen可能会从8gb无害地减少到几百MB,这与系统遇到的内存不足错误无关。

这个主题已经有几个月了,但我自己能够解决这个问题

该问题与在用户会话中存储数据的特定应用程序有关。在某些特殊且非常罕见的情况下,数据量仍然过多,序列化和反序列化的时间也增加了。例如,一个普通用户会话添加了10个自定义属性,导致问题的会话添加了10000多个属性

解决方案(在我的例子中!)不再将这些属性存储在用户会话中,而是将它们添加到分布式ehcache中


这个工具对发现问题有很大帮助:

这个主题已经有几个月了,但我自己能够解决这个问题

该问题与在用户会话中存储数据的特定应用程序有关。在某些特殊且非常罕见的情况下,数据量仍然过多,序列化和反序列化的时间也增加了。例如,一个普通用户会话添加了10个自定义属性,导致问题的会话添加了10000多个属性

解决方案(在我的例子中!)不再将这些属性存储在用户会话中,而是将它们添加到分布式ehcache中


此工具对发现问题有很大帮助:

服务器是否以独立ha配置运行?否,它们以域模式运行。仅提示:请尝试FindBugs。例如,查找正在序列化的内部类(将外部类与之一起,并将其重新创建为null)。在本地配置它,堆。也许是JavaMelody。JSF有一些默认值,每个用户都会付出高昂的代价。试试JBossEAP6.1.0吧!它在下面使用了更新的JBoss AS 7版本,这可能已经解决了您的问题。。。服务器是否以独立ha配置运行?否,它们以域模式运行。仅提示:请尝试FindBugs。例如,查找正在序列化的内部类(将外部类与之一起,并将其重新创建为null)。在本地配置它,堆。也许是JavaMelody。JSF有一些默认值,每个用户都会付出高昂的代价。试试JBossEAP6.1.0吧!它在下面使用了更新的JBoss AS 7版本,这可能已经解决了您的问题。。。好的,我试试这个。但是当抛出异常时,JBoss进程仍在运行,不需要重新启动它们。在引发异常前几分钟,用户将受到性能低下和某些连接超时的影响。我不建议在发生此类错误的情况下在生产环境中运行。仅关闭生产环境而不修复问题是不可行的。;)好的,我试试这个。但是当抛出异常时,JBoss进程仍在运行,不需要重新启动它们。在引发异常前几分钟,用户将受到性能低下和某些连接超时的影响。我不建议在发生此类错误的情况下在生产环境中运行。仅关闭生产环境而不修复问题是不可行的。;)