サービスの停止は、javaVM の問題やメモリ不足など、複数の要因で発生します。
緊急時の対応を想定して、切り分けのために確認するポイントのみを以下に記載いたします。確認する理由が必要な場合には、本文書の末尾の「■確認の理由」を参照してください。また、各問題の詳細を確認されたい場合には、以下にご案内している各FAQをご参照ください。
■確認するポイント
- ダンプログの確認
以下のいずれかのログが出力されているか、ご確認ください。
- バージョン 3.0 以降、または、バージョン 2.4.x 以前の x86 版を使用されている場合
$DATASPIDER_HOME\server\bin\hs_err_pid<pid>.log
- バージョン 2.4.x 以前の x64 版を使用されている場合
$DATASPIDER_HOME\server\bin\jrockit.<pid>.dump
出力されている場合は、以下のどちらかの FAQ をご参照ください。
- FAQNo.21130
【DataSpider Servista】 jrockit.****.dump というファイルが出力されてサービスが停止していました
- FAQNo.21129
【DataSpider Servista】 hs_err_pid****.log というファイルが出力されてサービスが停止していました
- DataSpiderServer.lax の確認
以下の設定ファイルから初期ヒープサイズ、最大ヒープサイズの設定値をご確認いただき、設定値に差が無いかご確認ください。
$DATASPIDER_HOME/server/bin/DataSpiderServer.lax
初期ヒープサイズは、以下のいずれかのキーで指定されています。
- バージョン 3.0 以降、または、バージョン 2.4.x 以前で 2 GB 以上を設定されている場合
lax.nl.java.option.additional= 内の -Xms
- バージョン 2.4.x? 以前の x86 版を使用している場合
lax.nl.java.option.java.heap.size.initial
最大ヒープサイズは、以下のいずれかのキーで指定されています。
- バージョン 3.0 以降、または、バージョン 2.4.x 以前で 2 GB 以上を設定されている場合
lax.nl.java.option.additional= 内の -Xmx
- バージョン 2.4.x? 以前の x86 版を使用している場合
lax.nl.java.option.java.heap.size.max
二つの設定値に差がある場合は、以下のFAQをご参照ください。
- FAQNo.21131
【DataSpider Servista】 プロセスが停止していましたが特に原因と思われるエラーが出力されていません
- サーバログ、サーバ標準エラー出力の確認
以下のディレクトリに出力されているログで、サービスが停止した時間帯に出力されている内容を確認してください。
$DATASPIDER_HOME/server/logs/server.log
$DATASPIDER_HOME/server/logs/server.error.log
以下のエラーメッセージで検索をかけて、サービスが停止した時間帯に該当するエラーが発生している場合は、以下の FAQ をご確認ください。
- java.lang.OutOfMemoryError: Java heap space
- java.lang.OutOfMemoryError: nativeGetNewTLA
- java.lang.OutOfMemoryError: mmAllocObject
ヒープ領域のメモリが確保できない状態になっています。この場合の対応方法は、以下のFAQをご参照ください。
FAQNo.21213
【DataSpider Servista】 処理対象のデータ件数を多くしたらスクリプトの実行が失敗するようになりました
- java.lang.OutOfMemoryError: PermGen space
- java.lang.OutOfMemoryError: Metaspace
パーマネント領域、もしくは Metaspace 領域のメモリが確保できない状態になっています。この場合の対応方法は、以下のFAQをご参照ください。
FAQNo.21334
【DataSpider Servista】 スクリプト実行時にエラーが発生したりDataSpider Studioが接続できなくなったりします
■確認の理由
- ダンプログの確認
Java は Just In Time コンパイル方式(以下、JIT方式)を採用しており、実行時にJava 中間コードから OS の Native コードに変換(コンパイル)し実行することで、パフォーマンスを向上しています。
DataSpiderServer の内部処理でも JIT 方式を採用していますが、JIT 方式のうち、Compiler Thread が呼び出された際に、サービスが停止することがあります。
メモリが十分に確保できている状態で上記問題が発生した場合、サービス停止時の処理状況がダンプログに出力されるため、この情報から調査を進めることができます。
逆に、メモリが十分に確保されていない場合は、ダンプログが出力されないため、(ダンプログを出力するためのメモリも確保できないため)原因をメモリ不足かどうか切り分けることができます。
このため、まず最初にダンプログの確認をお願いします。
- DataSpiderServer.lax の確認
初期ヒープサイズと最大ヒープサイズの設定値が異なる場合、javaVM はサービスの起動時に初期ヒープサイズで指定された容量のメモリを確保し、その後、メモリが不足した場合に、最大ヒープサイズに至るまで、確保するメモリ容量を拡張していきます。このときにメモリが確保できない場合、サービスが停止します。
javaVM 側でメモリ不足を検知する前にサービスが停止することがあり、この場合は、サーバログなどにメモリ不足を示すログが出力されません。このため、ダンプログの次に、DataSpiderServer.lax の確認をお願いします。
- サーバログ、サーバ標準エラー出力の確認
プロジェクト、スクリプトの作成数、または、処理対象のデータ件数が多いために DataSpiderServer.lax で指定した容量以上のメモリが必要となった場合、メモリ不足のエラー(java.lang.OutOfMemoryError)が発生します。
この場合、処理に必要なメモリの確保が難しくなるため、サービスが停止しやすい状態となります。このため、サーバログ、サーバ標準エラー出力の確認をお願いします。