Sun Java System Directory Server Enterprise Edition 6.3 配備計画ガイド

サフィックスに 1,000,000 件のサンプルディレクトリエントリを設定する

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