質問
それまで正常に終了していたスクリプトで処理対象のデータ件数を多くしたところ、下記のエラーが発生し、スクリプトの実行が失敗するようになりました。
原因と対応策を教えてください。
- java.lang.OutOfMemoryError: Java heap space
- java.lang.OutOfMemoryError: GC overhead limit exceeded
回答
■エラーの発生原因
HULFT Squareで読み込んだデータの容量が、設定しているヒープメモリを超えた場合に、上記のエラーが発生します。
■対応策
- 大容量データ処理、パラレルストリーミング処理(PSP)の使用
大容量データ処理は、読み取ったデータを一時ファイルに保存し、メモリ上に保持するデータ量を抑えます。
パラレルストリーミング処理(PSP)は、処理対象のデータをブロックに分割して、読み込み処理、変換、書き込み処理をそれぞれ別スレッドで処理することで
メモリ上に保持するデータ量を抑えます。
・大容量データの対応
https://www.hulft.com/help/ja-jp/HULFTSquare/Content/Data_Integration/Detailed/capacity.htm
・パラレルストリーミング処理
https://www.hulft.com/help/ja-jp/HULFTSquare/Content/Data_Integration/Detailed/parallel_streaming_processing.htm
- Integrateサービスのメモリを増設する
現在使用しているIntegrateサービスを削除し、メモリを増設した新しいIntegrateサービスを作成してください。
なお、Integrateサービスを削除した場合、紐づいているジョブのサービス参照先がクリアされますので、再作成後はサービスを再度指定しなおす必要があります。
ジョブの編集画面から設定を変更してください。 -
バッチサイズの設定を見直す
データ処理コンポーネントのバッチサイズの設定により、ヒープメモリを圧迫している可能性があります。HULFT SquareのDB系コネクターではデータ書き込み時にhepeメモリ領域にデータを保持し、バッチサイズ分のデータごとに書き込みを行います。
そのため、一度に処理するデータ量であるバッチサイズが大きい場合、hepeメモリ領域が枯渇してスクリプトの実行に影響を及ぼす場合があります。つきましてはバッチサイズの設定値を「10,000」以下程度の小さい値に調整したうえで事象が解消するか、お試しください。
上記対応策にてエラーが解消されない場合は、テクニカルサポートセンターまでお問い合わせください。
コメント
0件のコメント
記事コメントは受け付けていません。