スクリプト実行時にエラー(ScriptNotFoundException)が発生したり、DataSpider Studio が接続できなくなったりする問題が不定期に発生しています

Avatar
dstn

Question

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

java.lang.OutOfMemoryError: PermGen space

Answer

■エラーの発生条件

ご質問いただいたエラーは、Java のメモリ領域の一つであるパーマネント領域が
不足した場合に発生します。パーマネント領域には、DataSpider のスクリプトの情報、
クラスなど、各種処理の実行に必要なモジュールが格納されます。

■想定される原因

過去事例では、作成されるプロジェクトやスクリプト、トリガーの数が多くなった場合に、
ご質問いただいたエラーが発生していた例がありました。

■対応方法

パーマネント領域は、DataSpiderServer.lax の -XX:MaxPermSize で指定することが
できます。
こちらを変更していただき、事象が解消されるかご確認をお願いいたします。

設定の詳細につきましては、参考情報に記載したヘルプをご参照ください。
また、設定の変更方法については以下をご参照ください。

■設定変更方法

1. DataSpiderServer を停止してください 

2. 以下の設定ファイル、設定キーを変更してください。
 ・設定ファイル
  $DATASPIDER_HOME/server/bin/DataSpiderServer.lax
 ・設定キー
  lax.nl.java.option.additional
  このキーに指定されている、「-XX:MaxPermSize=128M」を[128M]から
  より大きな数に変更してください。
 
3. DataSpiderServer を起動してください。

■注意点

※-XX:MaxPermSize は、バージョン 2.x の Windows OS の x64 版
 DataSpider Servista には存在しませんのでご注意ください。

※バージョン 2.x の Windows x64 版 DataSpider では Q に記載した
 エラーは発生しません。

※バージョン4.0 から使用している Java のバージョンの影響で
 DataSpiderServer.lax の -XX:MaxPermSize の指定が必要なくなりました。

■補足

必要なパーマネント領域の容量は、Mapperの設定内容より計算できます。

※以下の計算式はパーマネント領域の最低限必要な容量計算となります。
 運用によっては、さらに多くの容量が必要となる場合もあるため、実際に
 設定していただいた上で、エラーが解消することをご確認ください。

容量算出の対象となるのは、以下の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 まで
 http://patch.appresso.com/DataSpider/help/DSS32/doc/help/ja/servista/properties_reference.html#server_lax
 バージョン4.0 以降
 http://patch.appresso.com/DataSpider/help/latest/doc/help/ja/servista/properties_reference.html#server_lax



[注意事項]
  • このFAQの内容は2017年3月時点のものです。内容は予告なく変更されることがありますので、ご注意ください。
  • 一部にDataSpider Servistaサポートサイトへのリンクを含むことがあります。サポートサイトにアクセスするには、DataSpiderのサポート契約が必要です。


ID:Q146

コメント

記事コメントは受け付けていません。

Powered by Zendesk