ZSM Runs Out of Memory

  • 7001051
  • 29-Jul-2008
  • 30-Apr-2012

Environment

Novell NetWare 6.5 Support Pack 7
Novell ZENworks 7 Server Management Support Pack 1 - ZSM7 SP1 Tiered Electronic Distribution (TED)

Situation

In a large ZSM environment (100 or more subscribers to a distributor), after startup of ZSM on a Distributor, the cleanup process runs.  Under both NW6.5SP5 and SP7 it would take all the available Reserved Java Heap but under SP5 it would recover and move on to sending any distributions that were scheduled at that time.  Under SP7 the ZSM process would end up shutting down. 

The garbage collection process would be running the entire time during cleanup but would have trouble keeping up with freeing memory back to the heap.  This can be seen by going to NetWare Remote Manager > Manage Applications > Java Application Information and highlighting the com.novell.application.zenworks.loader.ZENLoader process.  Select Show Application Details > Memory Usage > Garbage Collector at the bottom of this page.  Notice Old Generation takes up a majority of the heap.

Eventually the Old Generation would allocate and use up all of the available memory during cleanup and a few minutes after that the ZSM process would shutdown.

Resolution

To obtain a hot patch with the fix for this problem, follow the instructions in KB 3809227 "Updates to Novell ZENworks 7 Server Management" which can be found at https://www.novell.com/support

1.  On ZSM startup, the Distributor cleanup process will not run. On subsequent NDS refreshes it will run unless cleanupdistributions=false as stated below.
2.  In the tednode.properties file place an entry cleanupdistributions=<true/false> to get the desired behaviour.  By default cleanupdistributions will be true.

Additional Information

It is normal under ZSM to allocate more memory to the heap to accomodate the cleanup process.  This is done two ways:

1.  Allocate more memory for user address space through the use of the server.exe -u parameter.
2.  In the ZFS.NCF increase the -Xmx parameter to an amount 128-256MB below the -u parameter.

Example:
If server -u1440000000 (equates to 1.4 GB of memory) then set the -Xmx1152 (equates to 1207959552).  This leaves additional memory in user address space to deal with other java apps.  Please see TID's 10096649 & 3920657 for better explantions of user address space and -u parameter tuning.