性能関連

アプリケーションの性能を改善するための設定です。

文書一覧高速化機能に関する設定

文書一覧を高速化する設定

※本機能はDBサーバにOracleを使用している環境のみ有効となります。

表 文書一覧高速化の動作設定

親要素 default-values.brd.documentlist.tiger-search
要素 名称 初期値 説明
enable true 文書一覧高速化を使用するかどうか
記述例 <tiger-search>
<enable>false</enable>
</tiger-search>

文書一覧高速化機能使用時のSQL最適化処理オプション

※本機能はDBサーバにOracleを使用している環境のみ有効となります。

文書一覧高速化機能利用時にSQLの条件文のin句でbind変数の個数が設定値以上の場合にSQLの最適化処理を行う設定です。

※SmartDB Ver.3.2.0から既定値が2000から2に変更されています。

※JDK(64bit)で上記設定を使用する場合、Tomcatのスタックサイズは、JDK(32bit)の倍にする必要があります。JDK(32bit)では-Xss256kで問題なく動作しますが、JDK(64bit)では-Xss512kとしないと、Stack Overflowが発生する場合があります。

表 文書一覧高速化機能使用時のSQL最適化処理オプション

親要素 default-value.hibiki.rdb
要素 名称 既定値 説明
OracleWhereinTableOfNumber 2 0 : SQL最適化処理オプションを無効にする
2以上 : SQL最適化処理オプションを有効にする
記述例 <hibiki>
<rdb>
<OracleWhereinTableOfNumber>0</OracleWhereinTableOfNumber>
</rdb>
</hibiki>

文書一覧の部品検索の結果取得時のFetch行数を指定する設定

※本設定はデータベースにOracleを使用している場合のみ指定可能です。

DBサーバからデータを取得する際、1回のFetchで取得するレコード行数を指定可能にしました。レコード行数の指定は、文書一覧とシステム全体に対して指定できます。Fetch sizeを指定することで、必要なデータを一括で取得でき、APサーバからデータベースへの通信回数を減らすことができます。

文書一覧や文書詳細の表示速度に問題があり、その原因がネットワーク帯域に関わるものである場合は、本設定により、改善できる可能性があります。本設定を使用する場合はご利用の環境を考慮し、検証の上、値を設定してください。

文書一覧の表示対象を取得時にDBサーバから1回のFetchで取得するレコード行数を指定します。

本設定は以下の画面およびAPIに対し有効になります。

  • 文書一覧機能
  • 一括削除機能
  • 一括編集、一括実施機能
  • 文書選択画面
  • CSV出力
  • API(DocumentManager.getSearchResult)

※システム全体のFetch行数【システム全体のFetch行数を指定する設定】を指定している場合でも上記画面に関しては文書一覧の設定が有効になります。

【設定値の目安】

設定値の目安は文書一覧高速化機能を使用しているか否かで異なります。

表 Fetch size 設定の目安

文書一覧高速化機能 設定値の目安
OFF 文書一覧表示件数×11
例)1ページの表示件数を20件としている場合、Fetch行数を20×11の"220"
ON 文書一覧表示件数×1.1
例)1ページの表示件数を50件としている場合、Fetch行数を50×1.1の"55"

※"1000"を超えるような極端に大きい値を指定すると、メモリ消費量が増えますのでご注意ください。

表 文書一覧の部品検索の結果を取得時のFetch行数を指定する設定

親要素 brd.documentlist
要素 名称 動的ロード 既定値 説明
search-fetch-size 10 10以上の整数値(レコード行数を整数値で指定)
※設定の上限値についてはご利用の環境に依存します。
弊社動作環境で確認が取れている上限値は200000です。
記述例 <brd>
<documentlist>
<search-fetch-size>220</search-fetch-size>
</documentlist>
</brd>

文書一覧から文書検索時のタイムアウトに関する設定

文書一覧から文書検索した際のタイムアウトに関する設定です。 指定した時間を過ぎた検索の処理は、途中で打ち切られます。

表 タイムアウトに関する設定

親要素 default-values.brd.documentlist
要素 名称 初期値 説明
search-cancel-timeout 0 タイムアウトの時間(単位秒)を設定します。0の場合はタイムアウトしません。
記述例 <brd.documentlist>
<search-cancel-timeout>30</search-cancel-timeout>
</brd.documentlist>

文書一覧から文書検索時のスレッドプールサイズに関する設定

文書一覧から文書検索した際のスレッドプールサイズに関する設定です。

表 スレッドプールサイズに関する設定

親要素 default-values.hibiki.rdb
要素 名称 初期値 説明
query-executor-pool-size 20 スレッドプールサイズを設定します。未設定の場合はデフォルト値の「20」になります。
記述例 <hibiki.rdb>
<query-executor-pool-size>30</query-executor-pool-size>
</hibiki.rdb>

文書の部品データロード時の性能改善設定

文書の閲覧や編集画面表示時のデータ取得SQLをまとめることで、レスポンス改善を行う設定です。

表 文書の部品データロード時の動作設定

親要素 default-values.hibiki.smartcab
要素 名称 初期値 説明
use-raw-item-data true 文書の閲覧や編集画面でのデータ取得SQLをまとめる。
記述例 <smartcab>
<use-raw-item-data>false</use-raw-item-data>
</smartcab>

文書の更新処理時の性能改善設定

文書更新の際、更新のある部品を一括で更新することで、レスポンス改善を行う設定です。

表 文書の更新処理時の動作設定

親要素 default-values.hibiki.smartcab.update
要素 名称 初期値 説明
use-raw-data true 部品の更新処理を一括で行う。
記述例 <smartcab.update>
<use-raw- data>true</use-raw- data>
</smartcab.update>

CSVファイルによる文書更新時に一度にメモリにロードする文書数設定

CSVファイルによる文書更新を行う場合に一度にメモリにロードする文書数を指定をします。指定された文書数毎にメモリにロードし、更新処理を行います。

表 CSVファイルによる更新対象文書のロード単位(文書数)

親要素 default-values. hibiki.smartcab.csv.update
要素 名称 既定値 説明
batch-size 100 CSVファイルによる更新処理を行う単位(文書数)。
※0以下の値を指定すると既定の100で処理します。
※1000以上の値を指定すると上限の1000で処理します。
指定可能範囲:1~1000
記述例 <hibiki.smartcab>
<csv>
<update>
<batch-size>200</batch-size>
</update>
</csv>
</hibiki.smartcab>

【既定値の場合の実施例】
CSV ファイルのレコードが1000件の場合、更新対象の文書のうち100件(既定値)をロードして比較し、更新します。その後、次の100件(既定値)をロードして比較し、更新します。これを繰り返し、1000件すべての更新が完了したら、コミットし、CSVの更新処理が完了します。

自動更新部品のlookup処理性能改善

文書登録時や文書編集中の自動更新部品の処理を見直し、lookupで参照する他バインダの閲覧可能部品のリストをキャッシュする設定です。

参照先のバインダの閲覧可能部品が多い場合に性能改善効果があります。有効/無効はシステム単位で設定可能です。

表 自動更新部品のlookup処理設定

親要素 default-values.hibiki.smartcab
要素 名称 初期値 説明
use-direct-lookup false lookupで参照する他バインダの閲覧可能部品のリストをキャッシュする。
記述例 <smartcab>
<use-raw-item-data>false</use-raw-item-data>
</smartcab>

XMLキャッシュの最大ファイル数設定

XMLキャッシュの最大ファイル数を設定します。使用頻度の高いバインダの数が多い場合はこの値を大きくすることによって、性能面が向上する可能性があります。バインダに関連するXMLファイルの読み込み時間を減らし、ユーザ操作の待ち時間を短縮することができます。

表 XMLキャッシュの最大ファイル数設定

親要素 default-values.system.xml
要素 名称 初期値 説明
cache-size 1000 XMLキャッシュの最大ファイル数を設定。
記述例 <cache-size>3000</cache-size>

javascriptの圧縮化設定

SmartDBに使用されているjavascriptファイルをサーバで圧縮した後にクライアントに転送する設定です。有効にすることで同一画面上で必要となる複数のjavascriptを一括で取得でき、また、圧縮されることによってネットワーク上の通信量も削減することができます。

表 javascriptのcompress設定

親要素 default-values.hibiki.javascript
要素 名称 初期値 説明
compress false trueにすると製品内のjsファイルについて圧縮化が有効になる。
記述例 <hibiki>
<javascript>
<compress>true</compress>
</javascript>
</hibiki>

プロセス定義のキャッシュ設定

プロセス定義を一定数までキャッシュし、必要な場合にキャッシュを参照するように変更する設定です。キャッシュを有効にする場合、頻繁に使用されるプロセス定義の数やAPサーバのメモリの空き状況等によって設定値を調整する必要があります。 ※Ver.4.1よりデフォルト値が"false"から"true"に見直されました。

表 プロセス定義のキャッシュ設定

親要素 default-values.hibiki.workflow.process.definition
要素 名称 初期値 説明
enable-cache true trueの場合プロセス定義をキャッシュする。
falseの場合、キャッシュしない。
cache-size 100 enable-cacheがtrueの場合のキャッシュする数。
記述例 <workflow>
<process>
<definition>
<enable-cache>false</enable-cache>
<cache-size>200</cache-size>
</definition>
</process>
</workflow>

アクティビティの定義のキャッシュ設定

アクティビティの定義をメモリ上にキャッシュし、読込みを高速化する設定です。キャッシュを有効にする場合、頻繁に使用されるプロセス定義・アクティビティの数やSmartDB APサーバのメモリの空き状況等によって設定値を調整する必要があります。

表 アクティビティの定義のキャッシュ設定

親要素 default-values.hibiki.workflow.individual-activity
要素 名称 初期値 説明
data-map-cache-enable false trueの場合アクティビティ定義をキャッシュする。
data-map-cache-size 1000 data-map-cache-enableがtrueの場合のキャッシュする数。
記述例 <individual-activity>
<data-map-cache-enable>true</data-map-cache-enable>
<data-map-cache-size>1500</data-map-cache-size>
</individual-activity>

アクティビティ実施スレッド数を可変とする設定

完全に同時に並列処理可能なアクティビティ数を設定します。 デフォルトでは、APサーバ1台あたり5つです。 並列処理可能な本数の変更による影響は環境を構成するサーバのスペックやそのバランスによっても異なるため、調整が必要になります。

※この数を増やす場合は、DBコネクションの数も考慮してください。

表 アクティビティ実施スレッド数を指定する設定

親要素 default-values.hibiki.workflow
要素 名称 初期値 説明
max-threads 5 アクティビティ実施時の並列処理のためのスレッド数。
記述例 <workflow>
<max-threads>10</max-threads>
</workflow>

アクティビティ実施完了画面のイベントハンドラ欄の表示設定

権限がある場合にアクティビティ実施完了画面に表示される、プロセス定義に設定されたイベントハンドラの内容の表示/非表示の設定です。非表示にすることで、実施完了画面のレスポンスを向上させることができます。

表 アクティビティ実施完了画面でイベントハンドラ欄の表示/非表示設定

親要素 default-values.hibiki.workflow.activity-receipt
要素 名称 初期値 説明
display-event-handler-info false true: アクティビティ実施完了画面でイベントハンドラ欄を表示する。
false: アクティビティ実施完了画面でイベントハンドラ欄を非表示する。
記述例 <workflow>
<activity-receipt>
<display-event-handler-info>false</display-event-handler-info>
</activity-receipt>
</workflow>

アクティビティの実施完了画面の詳細実施情報の集約設定

実施完了画面の一番下の「最新文書」「実際の担当者」「実施者」の情報を「詳細実施情報」に集約し、展開・折畳むことができる設定です。集約して表示することで、実施完了画面のレスポンスを向上させることができます。

表 詳細実施情報に集約し表示するか従来の表示とするかを切り替える設定

親要素 default-values.hibiki.workflow.execute-confirm-screen
要素 名称 初期値 説明
display-detailed-exec-info true true詳細実施情報に集約し表示します
false従来の集約しない形で表示します。
記述例 <execute-confirm-screen>
<display-detailed-exec-info>true</display-detailed-exec-info>
</execute-confirm-screen>

データベースコネクションの詳細情報を出力しない設定

hibiki.xmlファイルに記述したSmartDBのデータベースへの接続情報で「trace」をTRUEにしている場合は性能に影響します。デバッグ情報を必要としない場合は、設定をFALSEにしてください。詳細は【SmartDBのデータベースへの接続方法の設定】を参照してください。

性能に関するログ出力

性能に問題があった場合のためにログを出力するかどうかを設定します。

※本機能は、設定内容によっては大量にログが出力され、ログファイルが肥大化する可能性があります。

 ご使用の際には、log4j.xmlの設定でログ出力対象の処理が指定されていることをご確認ください。

表 ログ出力設定

親要素 default-value.hibiki.profile-log
要素 名称 初期値 説明
enabled false ログ出力の設定
trueにした場合はログ出力を行う
記述例 <profile-log>
<enabled>true</enabled>
</profile-log>

また、上記ログを有効にした場合はlog4j.xmlに下記の設定を追記して使用してください。

log4j.xml(response.logに出力する設定例)

<!-- Response Time -->
<appender name="RESPONSE_LOG" class="org.apache.log4j.DailyRollingFileAppender">
<param name="File" value="/var/log/hibiki/response.log" /> ←出力ファイル名
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p %C{2} (%F:%L) --- %m%n"/>
</layout>
</appender>

※出力ファイル名は任意の指定で問題ありません。

ログ出力例

上記log4j.xmlの設定では、/var/log/hibiki/response.log に以下のようにログが出力されます。

[HibikiDispatchAction /hibiki/WfProcess.do: 357 ms] ・・・①
... 74 ms ・・・②
[WfProcessDefinitionManager#loadFacade: 12 ms] ・・・③
[loadFacade mothod start: 12 ms] ・・・④
... 271 ms ・・・⑤
[VelocityServlet /template/workflow/process/detail/view_frame.vm: 1 ms]

① 次の同じ階層のログ(VelocityServlet…)までにかかった時間

② HibikiDispatchActionの中の処理のうち、下の処理以前のもの

③ WfProcessDefinitionManager.loadFacade全体の時間

④ WfProcessDefinitionManager.loadFacadeの内部で呼んでいる、loadFacadeというメソッドにかかる時間

⑤ のloadFacade処理以降で、VelocityServletに処理が渡るまでの時間

既読情報削除設定

既読未読機能を有効にした場合、対象となる文書の有効範囲の期間が長すぎるとデータの母数が巨大になり、その結果文書一覧の性能が劣化する可能性があるため、肥大化する既読情報を物理削除するための定期削除処理機能を設定することができます。

表 既読情報削除設定

ファイル default.xml
親要素 default-values.hibiki.brd.document-reading
要素 名称 quartz-delete.enable
既定値 true
説明 既読情報の定期削除機能の有効・無効設定
true : 有効
false : 無効
要素 名称 quartz-delete.delay-days
既定値 365
説明 既読情報を物理削除するまでの日数
要素 名称 quartz-delete.cron-expression
既定値 0 1 5 * * ?  (毎朝05:01:00)
説明 定期処理の実施時間を設定。
  “秒 分 時 日 月 曜日”
※cronと類似の設定方式です。詳細は以下のURLを参照してください。
http://www.quartz-scheduler.org/documentation/quartz-2.2.2/tutorials/crontrigger.html
記述例 <hibiki.brd>
<document-reading>
<quartz-delete>
<enable>true</enable>
<delay-days>365</delay-days>
<!-- 毎日05:01:00で定期削除処理を実施する -->
<cron-expression>0 1 5 * * ?</cron-expression>
</quartz-delete>
</document-reading>
</hibiki.brd>

システムの応答時間ログ出力の閾値設定

下記に指定した時間を超えた処理が発生すると、システムの応答時間ログ(response.log)に出力が行われます。下記設定値により、指定した時間(閾値)を変えることができます。

表 システムの応答時間ログ出力の閾値設定

親要素 default-values.hibiki.time-keeper
要素 名称 初期値 説明
warning-limit 30000 指定した時間を超えた処理が発生すると、システムの応答時間ログへ出力します。単位:[ms]
記述例 <time-keeper>
<warning-limit>30000</warning-limit>
</time-keeper>