帳票出力処理に時間がかかる場合の調査結果と分析からSVFのパフォーマンスを考える。
■調査結果
SVFのデバッグログで確認すると File Full Path の時に処理時間がかかっている。
File Full Path は Vrw32 クラスの VrSetForm を実行した際のログである。
vmstat でサーバ負荷を確認すると、SVF帳票出力のタイミングでCPUのユーザモードでの使用率が93%~94%に達しており、システムモードをあわせるとほぼ100%に達していた。
ガベージコレクションの回数を確認してみるとこのタイミングで実行間隔が短くなったり、フルガベージコレクションが実行される間隔が短くなったりすることはなかったので、メモリに大きな問題はないと考えられる。
■原因
様式ファイル(フォームファイル、formファイル)に矩形や罫線のアイテム数が多く、ファイルサイズが大きい場合に発生。
■参考
サーバのスペックや
その他の処理による負荷によって事情は異なることを前提に参考とすること。
平均CPU負荷15%程度のサーバで300kbほどの様式ファイルを読み込むのに11秒ほどかかり、その間CPU負荷が高まり、100%になることがある。
EMFファイル1つのページ数が多く、条件によってレイアウトが異なる帳票では、ループ処理の中で条件を判定して、 Vrw32 クラスの VrSetForm を実行するが、アイテム数が多い様式ファイルを何度も繰り返し読み込むとその間のCPU負荷が100%になる。
■参考実績値
サーバのスペックやその他の処理による負荷によって事情は異なることを前提に参考とすること。
67ページの帳票
15回アイテム数が多い 300kbの様式ファイル(読み込み時に平均12.3秒かかる)を読み込み
14回アイテム数が少ない64kbの様式ファイル(読み込み時に平均 0.1秒かかる)を読み込み
帳票作成に要した時間が198秒であった。
15回 × 12.3秒 = 184.5秒
14回 × 0.1秒 = 1.4秒
様式ファイル読み込みにかかる合計時間が185.9秒なので帳票作成時間のほとんどが様式ファイル読み込みであることがわかる。
なお、この3分18秒の間のCPU負荷が100%となっていた。
最終更新:2011年06月30日 10:16