Excel出力に耐えられるか!?Javaサービスのヒープサイズ設定について

2021年8月31日サポぶろぐ

皆さん、こんにちは!
株式会社アシストでWebFOCUSのサポートを担当しています齋藤です。

日頃、WebFOCUSを利用している中でExcelや、グラフ出力を行っている方も多くいらっしゃるのではと思います。
WebFOCUSではExcelやグラフ出力の際にJavaサービス(Jscom3プロセス)を使用しており、このプロセスに関して
皆様に是非知っておいて頂きたいことがございます!

..ということで今回のテーマは、

Excel出力に耐えられるか!?Javaサービスのヒープサイズ設定について

です!今回は以下の流れでJavaサービスについてお伝えしていきます。

・そもそもJavaサービスが使用される処理って?
・知っておくべき懸念点について
・Javaサービスのヒープサイズ設定方法

それでは早速…

◆そもそもJavaサービスが使用される処理って?
 WebFOCUSでは以下の処理を実施する際にJavaサービス(Jscom3プロセス)を使用します。

・グラフ出力時
・Excel出力時
・JDBCドライバ経由での検索処理時(PostgreSQLやVertica等の検索時)


それでは、上記処理に伴いJavaサービスが使用されることで、どのような懸念点があるのかをご紹介します。


◆知っておくべき懸念点について
前述した処理を用いてJavaサービス(Jscom3プロセス)を使用する際、事前に割り当てられる
メモリ領域(ヒープ領域)が十分に 確保されていない場合に…

・オブジェクト情報の破棄頻度が上がりパフォーマンス低下につながる
・メモリ不足によるエラーでプログラムが終了してしまう


などの事象が発生する恐れがあります。

弊社サポートセンターにも、「Excel実行の結果が返ってこなくなった…」等の事象でお客様から
お問い合わせを頂き、ログファイルを見ると「OutOfMemory」(メモリ不足)が発生していた。
という事例も多々あります。
したがって、実行時のデータ量やリクエストの実行頻度に応じてヒープサイズを検討し、
都度調整して頂く必要がございます。

ヒープサイズの設定手順は以下の通りです。


◆Javaサービスのヒープサイズ設定方法
1. Webコンソール(http://サーバ名:8121/)へ管理者ユーザーでアクセスします。
2. 画面左側ツリーより [Java サービス] – [DEFAULT]を右クリックし、[プロパティ]を選択します。

3. Javaサービスの構成画面で[JVMの設定]を開き、メモリサイズを設定します。
Java 初期ヒープサイズ:最小値(MBで指定)
Java 最大ヒープサイズ:最大値(MBで指定)


※ 補足情報その壱~リフレッシュ間隔の設定について~
 Javaサービスの構成画面から[基本]を開き、Javaサービスの停止タイミングと初期起動数を設定することが可能です。

• REFRESH
→ Javaサービス処理数の上限値です。処理数が指定回数以上になると既存プロセスが停止し新規プロセスが起動されます。

• NUMBER_READY
→ Javaサービスの初期起動プロセス数です。


※ 補足情報その弐~ヒープサイズの設定値について~
最大ヒープサイズは、利用可能な物理メモリサイズを超えないように設定する必要があり、必要以上に大きく
しすぎると無駄にリソースを消費したり、パフォーマンスに影響が出る場合があります。
また、前述したJavaサービスの起動数の設定(NUMBER_READY)を考慮する必要があり、Javaサービスごとに、
最大ヒープサイズに設定したメモリが消費されますので、注意が必要です。

例: [NUMBER_READY :2] [Java 最大ヒープサイズ :1024MB] と指定した場合、最大で約2GBのメモリを消費します


今回はJavaサービスの利用タイミングやチューニングの指定方法についてお伝えしましたが、
ご不明な点があればお気軽にサポートセンターまでお問い合わせ下さい!

次回は「開発工数短縮!プロシジャの処理を共通化する方法」について投稿予定です。お楽しみに~!

<この記事をかいた人>
株式会社アシスト DX推進技術本部データ活用技術統括部 齋藤 昇太
入社歴 : 2015年新卒入社、7年間 WebFOCUS のサポートを専任
趣味 : プロ野球観戦(日ハムファン)、Apex(マスターランク達成!)
ひとこと : 「こんな記事が欲しい」というご要望お待ちしてまーす!