The Embedded Service Provider crashes on Linux Access Gateway after increasing tomcat memory to 2GB

  • 7011325
  • 08-Nov-2012
  • 08-Nov-2012

Environment

Novell Access Manager 3.1 Linux Access Gateway
Novell Access Manager 3.1.4 Linux Access Gateway

Situation



  • The "/etc/opt/novell/tomcat5/tomcat5.conf" configuration file has been modified to allocate 2GB of memory
    JAVA_OPTS="${JAVA_OPTS} -server -Xmx1024m -Xms1024m -Xss128k -XX:+UseConcMarkSweepGC"

  • A Java HotSpot VM error log hs_err<pid>.pid has been generated
    # There is insufficient memory for the Java Runtime Environment to continue.
    # Native memory allocation (malloc) failed to allocate 32756 bytes for ChunkPool::allocate
    # Possible reasons:
    #   The system is out of physical RAM or swap space
    #   In 32 bit mode, the process size limit was hit
    # Possible solutions:
    #   Reduce memory load on the system
    #   Increase physical memory or swap space
    #   Check if swap backing store is full
    #   Use 64 bit Java on a 64 bit OS
    #   Decrease Java heap size (-Xmx/-Xms)
    #   Decrease number of Java threads
    #   Decrease Java thread stack sizes (-Xss)
    #   Set larger code cache with -XX:ReservedCodeCacheSize=
    # This output file may be truncated or incomplete.
    #
    #  Out of Memory Error (allocation.cpp:211), pid=30449, tid=717900688
    #
    # JRE version: 6.0_26-b03
    # Java VM: Java HotSpot(TM) Server VM (20.1-b02 mixed mode linux-x86 )

    ---------------  T H R E A D  ---------------
    Current thread (0x2af43c00):  JavaThread "C2 CompilerThread0" daemon [_thread_in_native, id=30462, stack(0x2ac24000,0x2aca5000)]

    Stack: [0x2ac24000,0x2aca5000],  sp=0x2aca1e40,  free space=503k
    Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
    V  [libjvm.so+0x7248b0]

  • The "/var/opt/novell/tomcat5/logs/catalina.out" file did not log any errors at the time this crash happened

Resolution

  • Do not configure the Java heap size bigger than 1.6GB on a Linux 32 Bit operating system.

  • Upgrade to NetIQ Access Manager 3.2 running on a 64 Bit version of the Access Gateway Service to allow allocating a bigger Java heap size.

  • Usually the heap size will be increased due to heavy usage. In case you cannot upgrade to 3.2 soon and adjusting the heap size to 1.6GB is till not sufficient for your environment add another LAG to the cluster.

Additional Information

  • The JAVA_OPTS "-Xms" "-Xmx" can be used to adjust the Java Heap Size
    -Xms - amount of memory allocated while starting up JVM / Tomcat.
    -Xmx - maximum memory that can be allocated by the  JVM / Tomcat.

  • There is a "Frequently Asked Questions About the Java HotSpot VM" on the Oracle web pages which explains the details about how many memory can be assigned running the JVM on a 32 Bit platform: http://www.oracle.com/technetwork/java/hotspotfaq-138619.html#gc_heap_32bit