100,000 件のエントリから 1,000,000 件のエントリに移行すると、4G バイトの物理メモリーを備えたシステム上ではもはや十分な容量を確保できず、すべてのエントリをエントリキャッシュ内に収めることができなくなります。まず、データをインポートし、そのディスク上での占有サイズを確認します。
$ 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 |
このインスタンスの存続期間中にディレクトリデータのサイズが約 25 % 増加することが予期されると仮定して、データベースキャッシュのサイズを 1700M バイトに設定します。
$ 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 -
|
データベースキャッシュがこの大きさで、かつ物理メモリーが 4G バイトしかなければ、このサフィックスのエントリキャッシュに格納できるのは、ほんの一部のエントリだけになります。ここでは、エントリキャッシュサイズを 1G バイトに設定してからキャッシュに情報を格納し、プロセスのヒープサイズがどのように変化するかを確認します。
$ 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 -
|
プロセスの合計サイズは 2.8G バイトを超えています。
$ 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 |
これまでのエントリキャッシュサイズに基づいて推定すると、十分な物理メモリーが存在していれば、エントリキャッシュだけで 5.5G バイトまたは 6G バイトが使用されることが予期できます。
インデックスを 5 つ追加してディレクトリデータベースのサイズを確認すると、そのインデックス追加によって、データベースのサイズが約 200M バイト増加したことがわかります。
$ 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 |