Oracle iPlanet Web Server 7.0.9 Troubleshooting Guide

On Unix Systems, Web Server Consumes Excessive Memory on Startup

When starting up on Unix systems, Web Server employs an auto-tuning algorithm to provide values for certain elements when they are not specified in server.xml. Because this algorithm is based on the system's file descriptor limit, auto-tuning can cause Web Server to consume an excessive amount of memory when the file descriptor limit is very high and the elements are not explicitly specified in server.xml.

On startup, Web Server interrogates the system for the file descriptor limit, and then it allocates or reserves file descriptors for these items:

  1. Web applications (80% of the descriptors)

  2. Daemon session threads' connections (an average of 4 descriptors per thread)

  3. JDBC pools

  4. Access log counts for all virtual servers

  5. Listener counts

  6. File cache (the max-open-files subelement of the file-cache element)

  7. Keep-alive connections (the max-connections subelement of the keep-alive element

  8. Thread pool queue (the queue-size subelement of the thread-pool element)

The last three of these items are optional in server.xml, and are assigned auto-tuned values if they are not explicitly specified in server.xml.

The auto-tuning algorithm takes the number of file descriptors remaining after items one through five above are subtracted, and partitions them out according to the following ratios:

Subelement 

max-open-files  :  max-connections  :  queue-size

File descriptor limit >= 1024 

       1        :         16        :      16    

File descriptor limit < 1024 

       1        :         16        :       8    

The fact that these ratios favor max-connections (and, to a lesser degree, queue-size), coupled with the fact that connections and queue members consume a considerable amount of memory, can give rise to excessive memory use on systems with a high file descriptor limit.

To avoid the excessive memory use, make sure to specify values for max-open-files, max-connections, and queue-size on systems that have a high file descriptor limit.