オプティマイズ処理速度のパフォーマンスについて

オプティマイズとは

オプティマイズとは、インデックスを物理的に最適化する処理です。
Luxorではインデックスが登録・更新・削除された場合に、その操作を検索結果に反映するために、コミットという内部処理を行います。
コミットが発生する度に、一群11個のインデックスファイルが作成されます。これが繰り返されると、検索時に多くのファイルをオープンする必要があるため、検索速度が低下します。また大量のコミットが継続的に発生するとOSのファイルディスクリプタが枯渇する事態も考えられます。
そのため、Luxorではあるタイミングで増加したインデックスファイルをマージする処理を行います。これがオプティマイズです。

オプティマイズはLuxorでは必須の処理ですが、以下の問題があります。

  • インデックスサイズが大きくなると、オプティマイズ処理に時間を要し、Luxorサーバのリソースを占有してしまう。
  • オプティマイズ処理中は検索は可能ですが、オプティマイズ中にインデックスが更新された場合、更新内容は検索結果に反映されない。(オプティマイズが終了すれば、検索結果に反映されます。)

よって、オプティマイズは重要なチューニングポイントとなります。

オプティマイズだけを実施する場合

■検証条件
サーバ構成 Luxorサーバ x 1台
APサーバ x 1台
DBサーバ x 1台
NFSサーバ x 1台
物理メモリ 3.6G (全サーバ共通)
LuxorサーバOS RHEL5.4/64bit
CPU 3050 @ 2.13GHz
Luxorサーバ:1、2cpu
INSUITE APサーバ:2cpu
INSUITE DBサーバ:2cpu
検索対象機能 ライブラリ
コミットするファイル件数、サイズ 300、27(MB)
コミット前のインデックスサイズ 5700(MB)
INSUITE APサーバのMaxClients 200

以下の可変要素で検証を行いました。

  • インデックス保存場所 :ローカルディスク、NFS
  • LuxorサーバのCPU数 :1、2
  • JVM :-Xms256m -Xmx256m、-Xms256m -Xmx512m

検証結果

インデックスの保存場所 CPU JVM 検索時間(s)
ローカル 1 -Xms256m -Xmx256m 241.419
1 -Xms256m -Xmx512m 235.960
2 -Xms256m -Xmx256m 205.279
2 -Xms256m -Xmx512m 198.779
NFS 1 -Xms256m -Xmx256m 960.260
1 -Xms256m -Xmx512m 951.708
2 -Xms256m -Xmx256m 983.916
2 -Xms256m -Xmx512m 949.247

オプティマイズ処理時間

オプティマイズ実行中に検索を実施した場合の検索速度

検証条件

以下の条件を固定にします。

  • JVM :-Xms256m -Xmx512m
  • CPU数 :1
  • 同時に検索処理するユーザ数 :10人
  • インデックス保存場所 :ローカル

検証結果

オプティマイズの有無 検索時間(ms)
2,505
2,280
検索の有無 オプティマイズ処理時間(s)
235
450

オプティマイズを実行していない場合は検索速度が速くなっていますが、それほど大きな違いはありません。ただし、オプティマイズ自体の処理時間は検索をしていない場合に比べて約2倍になります。オプティマイズ処理中は、CPUの使用率が高くなり、特にI/O待ち時間が長くなります。

オプティマイズの処理時間とインデックスサイズの関係性

検証条件

下記の条件を固定にします。

  • JVM :-Xms256m -Xmx512m
  • CPU数 :1
  • インデックスの保存場所 :ローカル
  • 検証対象製品 :INSUITE

検証結果

Namazuインデックスデータ件数※1 Luxorインデックス件数※2 Luxorインデックスサイズ(MB)※3 オプティマイズ処理時間(s)
40,000 80,000 5,700 235.960
45,000 90,000 6,400 292.357
50,000 100,000 7,100 337.952

1 Namazuモードで運用している環境では、/home/DreamArts/cmd/remake_luxor_indexコマンドで、この件数が取得できます。
2 Luxorモードで運用している環境ではLuxor管理画面で件数を取得することができます。取得方法については、『Luxorインストレーションガイド』を参照してください。また、Namazuインデックスデータ件数に対する、Luxorインデックス件数の比率は機能(ライブラリ、スケジュールなど)、設定により異なります。
3 新規にINSUITE®をインストールする場合は、『INSUITE容量見積シート』の"Luxor容量"列の値から、およそのオプティマイズ処理時間を見積ることができます。

既存インデックス件数

■結論

オプティマイズだけを実施する場合」の結果から、オプティマイズ処理速度はNFSの場合ローカルディスクに比べて4倍程度の時間がかかることがわかります。
また、「オプティマイズの処理時間とインデックスサイズの関係性」の結果から、NFSでインデックスサイズが巨大な場合は、オプティマイズ処理時間が相当時間必要になり、運用に支障をきたす場合も考えられます。この懸念がある場合は、自動でのオプティマイズを停止して夜間のバッチ処理などでのオプティマイズ実行をご検討ください。
具体的な方法については、『Luxorインストレーションガイド』の記載を参照してください。