As you move from 100,000 entries to 1,000,000 entries, you no longer have enough space on a system with 4 gigabytes of physical memory to include all entries in the entry cache. You can begin by importing the data and examining the size it occupies on disk.
$ dsadm import -i /local/ds /var/tmp/1M.ldif dc=example,dc=com … $ du -hs /local/ds/db/example/ 1.3G /local/ds/db/example |
Assuming you expect approximately 25% growth in directory data size during the lifetime of the instance, set the database cache size to 1700 megabytes.
$ dsadm start /local/ds Server started: pid=9060 $ dsconf set-server-prop db-cache-size:1700M $ dsadm stop /local/ds Server stopped $ dsadm start /local/ds Server started: pid=9118 $ pmap -x 9118 … Address Kbytes RSS Anon Locked Mode Mapped File … 0000000000437000 65508 55700 55452 - rw--- [ heap ] … ---------------- ---------- ---------- ---------- ---------- total Kb 1882448 1034180 76616 - |
Given a database cache this large and only 4 gigabytes of physical memory, you cannot fit more than a fraction of entries into the entry cache for the suffix. Here, set entry cache size to one gigabyte, and then prime the cache to see the change in the process heap size.
$ dsconf set-suffix-prop dc=example,dc=com entry-cache-size:1G $ ldapsearch -D cn=Directory\ Manager -w - -p 1389 -b dc=example,dc=com \ objectclass=\* > /dev/null Enter bind password: $ pmap -x 9118 … Address Kbytes RSS Anon Locked Mode Mapped File … 0000000000437000 1016868 1009852 1009612 - rw--- [ heap ] … ---------------- ---------- ---------- ---------- ---------- total Kb 2883268 2477064 1080076 - |
Total process size is over 2.8 gigabytes.
$ prstat -p 9118 PID USERNAME SIZE RSS STATE PRI NICE TIME CPU PROCESS/NLWP 9118 myuser 2816M 2374M sleep 59 0 0:03:26 0.5% ns-slapd/42 |
Extrapolating from earlier entry cache sizes, you can expect to use 5.5 or 6 gigabytes for entry cache alone if you had enough physical memory.
Examining the directory database size with five additional indexes, you find adding indexes has increased the size of the database by about 200 megabytes.
$ dsconf create-index dc=example,dc=com employeeNumber street st \ postalCode description $ dsadm stop /local/ds Server stopped $ dsadm import -i /local/ds /var/tmp/1M.ldif dc=example,dc=com … $ du -hs /local/ds/db/example 1.5G /local/ds/db/example |