Out of memory on rhel 4
189767Feb 2 2009 — edited Feb 4 2009Hi,
I'm facing unregular but reccurent out of memory errors with Jrockit R27.2 and R27.6 (java 1.5).
System is RHEL 4 (update 7) with 8Go of memory. 4Go are dedicated to hugepages (2000 * 2mo pages).
When crash occurs, the system still have free memory. It can happen after 30min or after one week of load.
JVM is running a tomcat server managing a webapp delivering "heavy" trafic : about 30-60 req/s and up to 100Mo allocated per second.
I didn't find any clue about this issue. No specific system logs. Is there a known incompatibility with some versions of glibc or kernel ?
What tests can I do to isolate the problem ?
Regards,
--
Bj
My jvm configuration is as follow :
export JAVA_OPTS="$JAVA_OPTS -Xmanagement:port=7091,ssl=false,authenticate=false -Djrockit.lockprofiling=false"
export JAVA_OPTS="$JAVA_OPTS -d64 -Xms3584m -Xmx3584m -XlargePages -XXcompressedRefs=0"
export JAVA_OPTS="$JAVA_OPTS -XXsetGC:genconcon -Xns160m -XXgcThreads:4"
export JAVA_OPTS="$JAVA_OPTS -XXallocClearChunks -XXkeeparearatio=50"
export JAVA_OPTS="$JAVA_OPTS -XXstaticCompaction -XXcompactRatio:10"
export JAVA_OPTS="$JAVA_OPTS -XXtlasize:min=12k,preferred=128k -XXlargeObjectLimit:8k"
export JAVA_OPTS="$JAVA_OPTS -XXlazyUnlocking -Djrockit.useAdaptiveFatSpin=true"
export JAVA_OPTS="$JAVA_OPTS -XnoOpt"
export JAVA_OPTS="$JAVA_OPTS -showversion -Xverify:none -XXexitOnOutOfMemory -XXnoSystemGC"
Here's one stacktrace :
java.lang.OutOfMemoryError: allocLargeArray - Object size: 351797264, Num elements: 351797248
at jrockit/vm/Allocator.allocLargeArray(JIZ)Ljava/lang/Object;(Native Method)
at jrockit/vm/Allocator.allocArray(JIZ)Ljava/lang/Object;(Unknown Source)
at java/io/ByteArrayOutputStream.write(ByteArrayOutputStream.java:95)
at java/io/ObjectOutputStream$BlockDataOutputStream.drain(ObjectOutputStream.java:1685)
at java/io/ObjectOutputStream$BlockDataOutputStream.setBlockDataMode(ObjectOutputStream.java:1594)
at java/io/ObjectOutputStream.writeObject0(ObjectOutputStream.java:1085)
at java/io/ObjectOutputStream.writeObject(ObjectOutputStream.java:302)
at java/util/HashMap.writeObject(Ljava/io/ObjectOutputStream;)V(Unknown Source)
at sun/reflect/GeneratedMethodAccessor562.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;(Unknown Source)
at sun/reflect/DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java/lang/reflect/Method.invoke(Method.java:585)
at java/io/ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:917)
at java/io/ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1339)
at java/io/ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1290)
at java/io/ObjectOutputStream.writeObject0(ObjectOutputStream.java:1079)
at java/io/ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1375)
at java/io/ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1347)
at java/io/ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1290)
at java/io/ObjectOutputStream.writeObject0(ObjectOutputStream.java:1079)
at java/io/ObjectOutputStream.writeObject(ObjectOutputStream.java:302)
at org/apache/catalina/cluster/session/DeltaRequest$AttributeInfo.writeExternal(DeltaRequest.java:347)
at org/apache/catalina/cluster/session/DeltaRequest.writeExternal(DeltaRequest.java:264)
at org/apache/catalina/cluster/session/DeltaManager.unloadDeltaRequest(DeltaManager.java:715)
at org/apache/catalina/cluster/session/DeltaManager.requestCompleted(DeltaManager.java:1298)
at org/apache/catalina/cluster/tcp/ReplicationValve.send(ReplicationValve.java:549)
at org/apache/catalina/cluster/tcp/ReplicationValve.sendMessage(ReplicationValve.java:536)
at org/apache/catalina/cluster/tcp/ReplicationValve.sendSessionReplicationMessage(ReplicationValve.java:518)
at org/apache/catalina/cluster/tcp/ReplicationValve.sendReplicationMessage(ReplicationValve.java:428)
at org/apache/catalina/cluster/tcp/ReplicationValve.invoke(ReplicationValve.java:362)
at org/apache/catalina/valves/ErrorReportValve.invoke(ErrorReportValve.java:117)
at org/apache/catalina/core/StandardEngineValve.invoke(StandardEngineValve.java:108)
at org/apache/catalina/connector/CoyoteAdapter.service(CoyoteAdapter.java:151)
at org/apache/jk/server/JkCoyoteHandler.invoke(JkCoyoteHandler.java:200)
at org/apache/jk/common/HandlerRequest.invoke(HandlerRequest.java:283)
at org/apache/jk/common/ChannelSocket.invoke(ChannelSocket.java:773)
at org/apache/jk/common/ChannelSocket.processConnection(ChannelSocket.java:703)
at org/apache/jk/common/ChannelSocket$SocketConnection.runIt(ChannelSocket.java:895)
at org/apache/tomcat/util/threads/ThreadPool$ControlRunnable.run(ThreadPool.java:685)
at java/lang/Thread.run(Thread.java:595)
at jrockit/vm/RNI.c2java(JJJJ)V(Native Method)
-- end of trace
JRockit aborted: Out of memory (68)
Failed to acquire native memory. Try reducing Java heap size using -Xmx:<size> (i.e "-Xmx16m")