• 文字サイズ変更
  • S
  • M
  • L

FAQのNo.から検索


  • No : 21334
  • 公開日時 : 2015/03/02 08:15
  • 更新日時 : 2019/08/07 15:49
  • 印刷

【DataSpider Servista】 スクリプト実行時にエラーが発生したりDataSpider Studioが接続できなくなったりします

スクリプト実行時にエラー(ScriptNotFoundException)が発生したり、DataSpider Studio が接続できなくなったりする問題が不定期に発生しています。
サーバログ、サーバ標準エラー出力を確認したところ、以下のようなエラーが出力されていました。原因と対応策について教えてください。
 
java.lang.OutOfMemoryError: PermGen space
java.lang.OutOfMemoryError: Metaspace
 
カテゴリー : 

回答

■エラーの発生条件
 
ご質問いただいたエラーは、Java のメモリ領域のうち、DataSpider のスクリプトの情報、クラスなど、各種処理の実行に必要なモジュールが格納されている領域が不足した場合に発生します。
 
このメモリ領域は、バージョン 4.0(JRE 1.8 ) 以降では Metaspace 領域、バージョン 3.2まで(JRE 1.7 以前)はパーマネント(PermGen space)領域と呼ばれています。
 
■想定される原因
 
過去事例では、作成されるプロジェクトやスクリプト、トリガーの数が多くなった場合に、ご質問いただいたエラーが発生していた例がありました。
 
■対応方法
 
パーマネント領域または Metaspace 領域を拡張して、事象が解消されるかご確認をお願いいたします。
 
設定の変更方法については以下をご参照ください。なお、設定の詳細につきましては、参考情報に記載したヘルプをご参照ください。
 
■設定変更方法
  1. DataSpiderServer を停止してください
  2. 以下の設定ファイル、設定キーを変更してください。
  • 設定ファイル
    $DATASPIDER_HOME/server/bin/DataSpiderServer.lax
  • 設定キー
    lax.nl.java.option.additional
このキーに指定されている、「-XX:MaxPermSize=」または
「-XX:MaxMetaspaceSize=」の「=」以降の値を、
現在の値よりも大きくしてください。
  1. DataSpiderServer を起動してください。
■注意点
 
※ 適切な設定値は、運用や設定内容により異なるため、お手数ですが、値を変更した後で事象が解消されるかチューニングをお願いいたします。
 
※ -XX:MaxPermSize は、バージョン 2.x の Windows OS の x64 版 DataSpider Servista には存在しませんのでご注意ください。
 
※ バージョン 2.x の Windows x64 版 DataSpider では Q に記載したエラーは発生しません。
 
※ DataSpider Servista が使用している JRE の影響により、バージョン 3.2まで(JRE 1.7 以前)パーマネント領域で指定していた設定が、バージョン 4.0(JRE 1.8 )から Metaspace 領域に変更になりました。
 
■補足
 
必要なパーマネント領域の容量は、Mapperの設定内容より計算できます。
(バージョン4.0 以降の Metaspace 領域の計算方法も同じです。)
 
※以下の計算式はパーマネント領域の最低限必要な容量計算となります。運用によっては、さらに多くの容量が必要となる場合もあるため、実際に設定していただいた上で、エラーが解消することをご確認ください。
 
容量算出の対象となるのは、以下のMapperです。
  • サーバに登録されたプロジェクトに含まれる全ての Mapper
  • デザイナから実行したスクリプトが含まれるプロジェクト中の全てのMapper
各Mapperに対して、以下を合計した容量が必要となります。
 
(1) 入力要素、出力要素
1つあたり、150 バイト
※ columnのみでなく、table 、row も対象となります。
※ マッピングされている/されていないは関係なく容量を必要とします。
 
(2) ロジックアイコン
1つあたり、200 バイト
※ マッピングされている/されていないは関係なく容量を必要とします。
 
(3) スクリプト変数、コンポーネント変数
1つあたり、150 バイト
※「1.」「2.」と異なり、マッピングされている場合だけ容量を必要とします。
 
例:
 
例として、以下のような設定のスクリプトの容量について計算します。
  • データベースから読み取った3つのカラムのデータを[単純な繰り返し]でファイル書き込み処理の3つのカラムにマッピング
  • コンポーネント変数の「error_code」をスクリプト変数にマッピング
( [table] + [row] + [column] × 3 )  #入力元
 + ( [table] + [row] + [column] × 3 ) #出力先
 + [単純な繰り返し]
 + ( [コンポーネント変数] + [スクリプト変数] )
=
( 150 + 150 + 150 × 3 )
 + ( 150 + 150 + 150 × 3 )
 + 200
 + ( 150 + 150 )
= 2 KB
 
また、mapper が多数あり、個別のカウントが現実的ではない場合、以下の計算式でおおよその容量を試算してください。
 
(Mapper の入力要素、出力要素の数の平均 × 150 + ロジックアイコンの数の平均 × 200 +
Mapping されているスクリプト変数、コンポーネント変数の数の平均 × 150 ) ×
(サーバに登録されたプロジェクトに含まれるMapperの数 + デザイナから実行したスクリプトが属するプロジェクトに含まれるMapperの数)
 
 
参考情報
  • プロパティリファレンス
バージョン3.2 まで
 
バージョン4.0 以降
 

このFAQに関してのご意見をお聞かせ下さい。