To define the proper memory allocation of the directory server components:
  1. Run the Directory Server setup command.
    Note:

    This must be done on hardware that represents the target production platform, especially with regard to process and memory, and the largest heap size that the setup tool allows.

  2. To define schema and production database settings for the database import, use the import-ldif tool.
    Note:

    After running import-ldif, the database is at its most optimized state on-disk with no inactive records. Over time, the on-disk representation of the database grows up to 25-50% as inactive records accumulate before being removed by the server’s cleaner thread.

  3. After the database is imported, start the server and make any needed configuration changes.
    Set the prime-method to preload on the userRoot backend configuration.
  4. Restart the Directory Server and watch for a successful preload message.
    • If preloading completes, proceed to step 6.
    • If preloading does not complete, proceed to step 5.
  5. If preloading does not complete, troubleshoot with the following steps:
    1. In the config/java.properties file, in the start-server.java-args entry, edit the entry to use larger values for -Xmx and -Xms arguments.
    2. Run the following command.
      bin/dsjavaproperties
    3. Restart the server and proceed to step 6.
  6. After preload completes, run the status command to review the database cache utilization.
    Note:

    A fully loaded database needs at least 10-20% cache headroom available for future growth, as in the following example.

                 --- JE Environment --- 
    ID   	: Cache Full : Cache  : On-Disk : Alert 
    ---------:------------:--------:---------:------ 
    userRoot : 30%	    : 1.1 gb : 868.6mb : None
  7. Optional: To see the state of the database cache in more detail, run an ldapsearch on the backend monitor.
    Note:

    In addition to the user configured backends, there might be backends for replication and changelog. The heap is shared among all backends. For information on how the heap amount allocated to each backend is calculated, seeAutomatic DB cache percentages.