Heavy Load OVD 10g Application Returns "Critical error while performing SEARCH java.lang.OutOfMemoryError" (Doc ID 465627.1)

Last updated on SEPTEMBER 16, 2016

Applies to:

Oracle Virtual Directory - Version 10.1.4.2 and later
Information in this document applies to any platform.

Symptoms

Errors are returned in an environment with a heavy load OVD application, which performs complex reiterative search operations. For example:

fgrep -i memory oracle-vde-dump.log

[2007-10-29 14:56:12,812] INFO - BackendStandard: [#Local] Initializing Memory
Indices [Restart Thread]
[2007-10-29 14:59:02,583] INFO - BackendStandard: [#Local] Initializing Memory
Indices [main]
[2007-10-29 15:40:55,284] ERROR - SearchOperation: Critical error while
performing SEARCH java.lang.OutOfMemoryError [WorkThread# 9]
[2007-10-29 15:41:07,653] ERROR - SearchOperation: Critical error while
performing SEARCH java.lang.OutOfMemoryError [WorkThread# 0]
[2007-10-29 15:41:13,205] ERROR - SearchOperation: Critical error while
performing SEARCH java.lang.OutOfMemoryError [WorkThread# 7]
[2007-10-29 15:41:18,711] ERROR - SearchOperation: Critical error while
performing SEARCH java.lang.OutOfMemoryError [WorkThread# 3]
[2007-10-29 15:41:43,686] ERROR - SearchOperation: Critical error while
performing SEARCH java.lang.OutOfMemoryError [WorkThread# 6]
[2007-10-29 15:41:49,208] ERROR - SearchOperation: Critical error while
performing SEARCH java.lang.OutOfMemoryError [WorkThread# 3]
[2007-10-29 15:41:54,949] ERROR - SearchOperation: Critical error while
performing SEARCH java.lang.OutOfMemoryError [WorkThread# 0]
[2007-10-29 15:42:00,426] ERROR - WorkThread: java.lang.OutOfMemoryError: null
[WorkThread# 9]
[2007-10-29 16:01:05,777] ERROR - SearchOperation: Critical error while
performing SEARCH java.lang.OutOfMemoryError [WorkThread# 4]
[2007-10-29 16:28:19,359] INFO - BackendStandard: [#Local] Initializing Memory
Indices [main]



An Example of  the application logic:

The OVD application, which has complex reiterative ldapsearches, does something like:

    1. The application sends a request with an ldapsearch command, which results in one big data result of about 31,000 entries. This is successful.

        1. The application creates a connection to an LDAP server

      1. It builds a request with a filter of cn=a*
        1. if the request fails (sizelimit exceeded)
        2. build a request with cn=aa*
                   then build a request with cn=ab*
          If the request fails, it can build a request with cn=aba*, then abb*...
        3. then build a request with cn=ac* ....
      2. Then build a request with cn=b* .....
      3. Do it for any combination recursively with all accepted characters for  cn-values so as to overcome the sizelimit exceeded error
    2. During an application execution, chunks of 31,000 entries can be returned

 

  1. The application can be configured to return chunks of different sizes


When the application is run to return big chunks of data, or a mixed request with one big dataset and many small datasets per connection (or something similar), it receives a java memory error

Changes

 

Cause

Sign In with your My Oracle Support account

Don't have a My Oracle Support account? Click to get started

My Oracle Support provides customers with access to over a
Million Knowledge Articles and hundreds of Community platforms