はじめに
MarkLogicに関連してXQueryの性能チューニング記事を集中的に上げていこうと思っていたのですが、まず今回はMarkLogicに付随するチューニング補助ツールを紹介していきます。性能チューニングを始める段階で何がネックになっているかを把握する手助けとなるはずです。(画像がうまくアップロードできないのでとりあえずテキストだけですが→IE以外のブラウザでうまくいったので画像を上げました)
クエリコンソールのProfile表示
MarkLogicインストール時に標準的に作成されるクエリコンソール(ポート8000番)は、実際に自分のクエリを書いて戻り値を確認できる便利なツールです。今回はその中にあるProfile実行というものを紹介します。
通常、画面中央のテキスト部分にクエリを記述し、Runボタンを押すと検索結果が表示されます。
今度は、画面下部の「Profile」を選択してから実行してみましょう。
画面下部には戻り値の代わりにどの記述がどのように使われたかが影響が大きかった順に表示されました。通常はDB検索を伴うcts関数がネックになことが多いのですが、手元ではループ内で文字列分離を行うfn:tokenizeが10万回も実行され上位に挙がりました。
チューニング対象としてこの上位に挙がっているものから解決すると効率よくなります。
監視画面のリソース利用履歴
簡易的ですが、DiskIO/CPU/メモリなどの利用状況をグラフ化して表示することが可能です。
☆DB設定
この結果を得るためには、DB設定の変更が必要です。ポート8001の管理画面を開いてConfigure→Groups→Defaultを選択し、以下のパラメータを変更します。
パラメータ | 設定値 |
---|---|
metering enabled | true |
performance metering enabled | true |
☆histroy画面
DB設定の変更後にMetersデータベースに取得結果が蓄えられはじめます。では実際に見てみましょう。クエリコンソール上部のMonitoringからHistroyを選択します。画面が開いたら左側の「TIME SPAN」を好きな範囲に調節したうえで、右上にある矢印ボタンを押してみましょう。すると設定した範囲にグラフ表示が変更されます。
*グラフが出ない場合は、ブラウザを変えてみる、あるいは互換表示を変更してみる、などで表示されるようです。
リソースにずいぶんと余裕があるようなら、並列処理をかけても問題なさそうです。逆にひっ迫している場合は、リソースの追加やクエリの改修方法の目途に役立ちます。
監視画面のダッシュボード
クエリコンソール上部のMonitoringからDashboardを選択します。すると「Query Execution」というタブの画面が出ます。これはDBに対して実行されているクエリの状況を一定時間ごとに表示更新する画面がでます。
次に「Disk Space」というタブを選択してみましょう。ここでは空き容量と使用容量が表示されます。ディスクの空き容量はMarkLogicのマージ領域を脅かし性能低下につながるため監視は重要です。
棒グラフの青い部分が、実際に使っている部分とマージ領域として確保しておきたい部分です。
おわりに
今回はMarkLogicがインストール時から備えている性能・リソース監視ツールを紹介しました。グラフ化して表示してくれることから初心者でも問題点の把握に使えそうですし、熟練者でもトラブル対応にて迅速に状況把握するツールとして活用できるものだと思います。
\def\textsmall#1{%
{\rm\scriptsize #1}
}
免責事項
$\textsmall{当ユーザ会は本文書及びその内容に関して、いかなる保証もするものではありません。}$
$\textsmall{万一、本文書の内容に誤りがあった場合でも当ユーザ会は一切責任を負いかねます。}$
$\textsmall{また、本文書に記載されている事項は予告なしに変更または削除されることがありますので、予めご了承ください。}$