レポートのキャッシュされたフィルターの更新に時間を要して、エラーになることがあります。
キャッシュされたフィルターの更新はレポートのデータを取得するクエリを利用します。
そのため、実行に時間を要するレポートは同じようにキャッシュされたフィルターの更新にも時間を要します。
フィルターの値は分析データベースから取得し、リポジトリデータベースへ格納します。
その際にフィルターの値のレコードが多い場合は取得及び格納に時間を要します。
データの取得または更新に時間を要した場合はデータベース接続がタイムアウトする可能性があります。
タイムアウトするとフィルターの更新はエラーとなり終了します。
これを回避するには下記のタイムアウトの時間を大きくします。
データソース:
レポートで使用しているデータソースのコネクションプールのタイムアウトを変更します。
タイムアウトに関してはこちらを参照してください。
リポジトリデータベース:
リポジトリデータベースとの接続のタイムアウトはデフォルトでは5分となっています。
変更(追加)方法はこちらを参照してください。
キャッシュするデータ(レコード)が多い場合はリポジトリデータベースへの格納に時間を要することがあります。
リポジトリデータベースへ格納する際にデフォルトでは100レコード単位で処理を行います。
処理するレコード単位を増やすことで一定のパフォーマンスの改善が期待できます。
キャッシュされたフィルタの更新の処理レコード単位は
<インストールディレクトリ>/appserver/webapps/ROOT/WEB-INF/web.xml
のMIStartup ServletにCachedFilterBatchSizeを指定することで調整します。
これはキャッシュされたフィルターの更新にのみ作用するオプションです。
<MIStartup>ブロックに下記のように指定します。
<init-param>
<param-name>CachedFilterBatchSize</param-name>
<param-value>10000</param-value>
</init-param> ※上記の設定後に必ずYellowfinを再起動してください。
ご使用の環境によってベストの値は変わってくると思いますが、ほとんどの環境で10000程度に設定することで効果が見込めます。
さらに調整を行う場合は、10000から1000ずつ加算または減算してパフォーマンスを計測することで効率よく微調整ができます。