![]() ![]() ![]() ![]() ![]() ![]() | ![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
第14章
この章では、Novell exteNd Application Serverをトラブルシューティングする場合に使用できる方法と手順の一部について説明します。この章は、次の節で構成されています。
サーバの実行中は、エラーログ出力機能を常にオンにすることが推奨されます。エラーログ出力は、SilverMasterのAgErrorLogテーブルまたは指定したファイルのいずれかにエラーメッセージに関する詳細な情報を出力する、軽量なプロセスです。ログ出力機能は、SMCを使用して有効にできます。詳細については、サーバのログ機能の使用を参照してください。
SilverMasterにログ出力する場合、ツールバーから[監視]アイコンを選択し、続けて[ログ]を選択すると、SMCでログを表示することができます。
詳細については、ログの表示を参照してください。
SMCのデバッグオプションを使用すると、サーバデバッグメッセージをサーバコーンソールに出力できるようになります。オプションには、クライアント要求、Webアプリケーション、およびSQLステートメントのデバッグが含まれます。デバッグオプションは、アプリケーションのデバッグ目的でのみ有効にします。これは、デバッグアクティビティによって、サーバのパフォーマンスが大幅に妨げられるためです。
注記: Windowsのサービスとしてサーバを実行している場合、出力は、コンソールウィンドウではなくエラーログに出力されます。
入力する数は、表示する詳細のレベルを示します。0という値は、メッセージが出力されないことを意味します。デバッグオプションは、次のとおりです。
データベース接続に関する問題が解決しない場合は、JDBCトレースを使用します。
サーバをシャットダウンします(アプリケーションサーバのシャットダウンを参照)。
http-server.Jdbc.DriverManager.LogFileエントリをpropsファイルに追加し、ログファイルを指すようにします。たとえば、ログファイルがd:\test\jdbc.logの場合、httpd.propsファイルに次の行を作成します。
http-server.Jdbc.DriverManager.LogFile
=d:\\test\\jdbc.log
注記: JDBCトレースはトラブルシューティングに対してのみ使用してください。これは、サーバの処理速度が低下し、非常に多くのディスク容量が使用されるためです。
サーバのコンソールウィンドウ(サーバが起動された元のウィンドウ)にコマンドを入力すると、サーバの状態に関する診断情報を取得することができます。 たとえば、メモリ使用状況、スレッド、セッション、およびサーバシステムプロパティに関する情報を取得できます。 また、異なるサブシステムに対してトレース機能を有効にすることも可能です。
Watcherツールを使用すると、サーバが応答しなくなった場合にサーバの状態を把握できるようになります。 有効にすると、Watcherは、1分ごとにサーバの状態をログ出力します。
ヒント: デバッグの困難な問題が発生した場合には、Watcherの変数を見つけることが推奨さ れます。
次のプロパティをhttpd.propsファイルに追加します。
http-server.com.sssw.srv.httpdwatcher
プロパティの値をウォッチャー設定ファイルのパス名に設定します。例:
http-server.com.sssw.srv.httpdwatcher=c:\\temp\\watchconfig.txt
ヒント: httpd.propsファイルでは、円記号をエスケープしてください。
サーバの起動時にこのプロパティが設定されている場合、サーバでは、「ウォッチャースレッド」を作成します。ウォッチャースレッドは通常はスリープ状態にあり、1分ごとに、httpdwatcherプロパティの値として指定されたウォッチャー設定ファイルの存在をチェックするために起動します。
ウォッチャー設定ファイルが存在しない場合 設定ファイルが存在しない場合、Watcherは何も実行せず、単にスリープ状態に戻ります。このような状況では、Watcherによるサーバのパフォーマンスへの影響は最小です。また、サーバがハングした場合でも、Watcherがハングすることはめったにありません。
ウォッチャー設定ファイルが存在する場合 Watcherでは、ウォッチャー設定ファイルが存在していることを検出すると、この設定ファイルを読み込み、さらなる操作を制御するために使用します。
ウォッチャー設定ファイルについて ウォッチャー設定ファイルは、次が含まれていなければならないASCIIテキストファイルです。
「一般的なウォッチャ設定ファイル」は、次のようになります。
7 c:\temp\watchout.txt
このファイルでは、スレッド、セッション、およびデータベース接続に関する情報を、指定した出力ファイルに1分ごとにダンプするようWatcherに通知します。
この節では、アプリケーションサーバの起動に失敗する理由の一部と、この問題の解決方法について説明します。サーバに関する問題のトラブルシューティングの詳細については、SilverMasterInitを使用したSilverMasterの再作成または更新を参照してください。
注記: サーバエラーは、使用している特定のデータベースに関連していることがあります。データベース固有の情報については、『データベース設定ガイド』を参照してください。
不適切なシステムリソースのために発生するサーバエラーの原因には、次の2つがあります。
データベースの整合性に関連したエラーが表示された場合は、SMCに移動して[データベーススキーマの同期化]オプションを実行し、サーバを再起動します。
詳細については、データベーススキーマの同期化を参照してください。
SilverMonitorは、サーバで実行されるバックグラウンドプロセスで、サーバのステータスを監視し、サーバが異常終了した場合にサーバの再起動を試みます。デフォルトでは、このプロセスは、サーバが起動されるとアクティブになります。SilverMonitorは、変更可能なデフォルトのパラメータを使用して開始します。また、SilverMonitorなしでサーバを実行することもできます。
パラメータは、次の2とおりの方法で変更できます。
DOSコマンドラインで、パラメータをサーバ起動オプションとして指定する。起動オプションの使用を参照してください。
優先順位は次のとおりです。
SilverMonitorパラメータの要約は、次のとおりです。
NTレジストリでSilverMonitorパラメータを変更する
HKEY_LOCAL_MACHINE>SOFTWARE>Novell>exteNd>AppServer>version number
次のダイアログボックスが表示されたら、前に説明したオプションの1つまたは複数を入力します。複数のオプションを指定する場合は、各オプションをスペースで区切ります。
SilverMonitorでは、サーバを再起動するとNT EventLogに書き込みを行います。また、SilverMonitorが実行されるディレクトリ(通常は、サーバの\binディレクトリ)にあるSilverMonitor.logファイルにも書き込みを行います。このログファイルでは、監視が開始されるたびにエントリを取得します。
SilverMonitorを再開すると、ログファイルは空になり、最初から開始します。
アプリケーションサーバは、全体的なシステム管理を行うためにSilverMasterデータベースに依存しています。SilverMasterInitは、SilverMasterデータベースで複数のタイプのプロセスを実行するコマンドラインプログラムです。SilverMasterInit実行可能ファイルは、サーバの\binディレクトリにあります。SilverMasterInitを使用すると、次の操作を実行できます。
この節では、次のトピックについて説明します。
次の表は、SilverMasterInitコマンドラインオプションのそれぞれを実行する方法と場合を示します。オプションのリストを表示するには、コマンドプロンプトで次を入力します。
SilverMasterInit -?
管理アカウント 管理アカウントには、「データベース」と「サーバ」の2つがあります。両方のアカウントは、インストール中に定義されます。サーバ管理アカウントでは、アプリケーションサーバにログインして管理できるユーザが制限されます。サーバ管理アカウントは、SilverMasterInitを使用して定義します。デフォルトのインストール後、サーバ管理者ユーザアカウントの保持者は、定義済みのAdministratorsグループのメンバーになり、Locksmith権限が与えられます。
アプリケーションサーバでは、SilverMasterデータベースに接続するときにデータベース管理者アカウントを使用します。SilverMasterデータベースアカウントを指定する必要があるのは、SilverMasterInitを実行する場合のみです。
オプションの入力 すべてのコマンドラインオプションに対しては、データベースユーザアカウント名とパスワードを入力する必要があります。また、次の表で記されているものを除くすべてのSilverMasterInitオプションに対して、FullまたはRefreshモードを指定する必要もあります。Fullモードのデータベース初期化を指定した場合は、3つのオプション(-A、-n、および-W)に対して、サーバ管理アカウント名とパスワードをコマンドラインで定義する必要もあります。
パラメータは、コマンドラインでSilverMasterInit起動オプションとして指定します。
SilverMasterInit起動オプション |
説明 |
用途 |
---|---|---|
-? |
SilverMasterInitの使用状況を表示します。 |
オプションの使用状況をチェックする場合に使用します。 |
+cp:a path |
指定したpathをクラスパスに追加します。 |
このオプションは、指定したパスをクラスパスに追加することによって、追加のJavaクラスをアプリケーションに対して使用可能にします。 注記: Javaクラスを拡張するには、AGCLASSPATH環境変数を使用します。 例: SilverMasterInit |
+cp:p path |
指定したpathをクラスパスに追加します。 |
このデバッグオプションは、Novell exteNd テクニカルサポートに連絡せずに使用しないでください。代わりに、AGCLASSPATHを使用して、追加のJavaクラスをアプリケーションに対して使用可能にします。AGCLASSPATH変数の設定を参照してください。 |
-A adminname |
アプリケーションサーバにログインして管理するために使用されるサーバ管理者ユーザ名を指定します。 |
このオプションを使用すると、新しいSilverMasterデータベースカタログを作成するときにサーバ管理アカウント名(およびパスワード)を定義できます。 指定したサーバユーザアカウントの保持者は、Administratorsグループのメンバーになり、完全なLocksmith権限が与えられます。サーバを管理するには、このアカウントを使用します。管理者アカウントについてを参照してください。 Fullモードのデータベース初期化を実行する場合は、サーバ管理アカウント名とパスワードを指定する必要があります。 例: SilverMasterInit -f -U |
-a |
アプリケーションサーバでユーザが自分自身を認証しなければならないようにします。 |
このパラメータは、SilverMasterデータベースへの読み込みアクセス(ログインリソースを含む)を誤って制限してしまった場合に設定します。また、このオプションを使用すると、SMCを実行せずに認証をすばやく設定できます。サーバ認証を使用したログインリソースへのアクセスを参照してください。 -aオプションを実行している場合は、RefreshモードまたはFullモードを指定する必要はありません。 例: SilverMasterInit -a -U |
-b |
起動環境設定を表示します。 |
FullモードまたはRefreshモードによって使用される初期SilverMaster環境プロパティを表示する場合に実行します。 例: SilverMasterInit [-f |
-c |
blobがデータベースに正しく挿入されていることをチェックします。 |
これらのオブジェクトが正しく保存されていることを確認する場合に実行します。 例: SilverMasterInit [-f |
-C properties file |
指定したproperties fileからnameServicePortポートまたはIIOP SSLポートのプロパティを読み込みます。 |
properties fileの構文は、プロパティの前にhttp-serverを指定しないという点以外は、httpd.propsファイルの構文と同じです。代わりに、次のように指定します。 <hostname>.<portnumber> hostnameとportnumberは、ドット(コロンではありません)で区切ります。 portnumberは管理ポートで、値が80以外の場合にのみ必要です。 nameServicePortを設定するには、次のプロパティを設定します。 <hostname>.<portnumber>.com.sssw.srv.nameServicePort=<nameServicePort> 例: tundra.8080.com.sssw.srv.nameServicePort=55597 IIOP SSLポート範囲を設定するには、次のプロパティを使用します。 <hostname>.<portnumber>.com.sssw.srv.port_iiop_ssl_min <hostname>.<portnumber>.com.sssw.srv.port_iiop_ssl_max port_iiop_ssl_minプロパティは、IIOP SSLに対する下限を指定します。範囲を指定しなかった場合、ORBでは、最初に使用可能なポートを取得します。範囲を指定する必要がない場合は、「-1」を使用します。port_iiop_ssl_maxプロパティは、IIOP SSL通信に対する上限を指定します。上限がない場合は、「-1」を使用します。 既存のSilverMasterを更新するには、SilverMasterInitを-rオプションとともに実行します。 例: SilverMasterInit -C port.props -U smbb -P password -A administrator -W admin -r |
-D database |
指定したSilverMasterデータベースからすべてのAgテーブルを削除します。 |
指定したSilverMasterデータベースから既存のアプリケーションサーバシステムテーブル(ユーザ、グループ、およびライセンスデータを含む)をすべて削除します。サーバから展開データベースを削除する場合に使用します。 Fullモードとは異なり、このオプションを使用すると、アプリケーションサーバシステムデータが削除されますが、データが初期プロパティに置換されることはありません。 例:
|
-e error log file |
必要に応じて作成される指定のファイルにエラーを書き込みます。 |
エラーが見つからなかった場合、ログファイルは作成されません。 パスを指定しないと、エラーログファイルは、SilverMasterInitを実行した元のディレクトリに保存されます。デフォルトのファイル名はsminit.logです。 例:
|
-f |
新しいSilverMasterデータベースを作成するためにFullモードで実行します。 |
新しいSilverMasterシステムデータとリソースを作成します。このオプションを使用すると、既存のユーザ、グループ、およびライセンスデータが削除されます。 注記: デフォルトでは、サーバは、Fullモードで実行すると制限されます。(開発環境に対して)制限されないようにサーバをインストールするには、SilverMasterInitを、Fullモードで-nとともに実行します。 Fullモードのデータベース初期化を実行する場合は、サーバ管理アカウント名とパスワードを指定する必要があります。 例: SilverMasterInit -f -U |
-L jdbc log file |
指定したログファイルにJDBCデバッグ情報を書き込みます。 |
ログファイル名を指定しなかった場合、このオプションは無視されます。 パスを指定しないと、JDBCログファイルは、サーバの\binディレクトリに保存されます。 例: SilverMasterInit [-f
|
-l locksmith account |
Locksmith権限を持たせるユーザまたはグループ(のアカウント)を指定します。 |
このオプションは、Locksmith権限が与えられているアカウントの保持者を誤ってすべて削除してしまった場合に使用します。SilverMasterへのアクセスの再取得を参照してください。 -lオプションを実行している場合は、RefreshモードまたはFullモードを指定する必要はありません。 例:
|
-n |
アプリケーションサーバへのアクセスを無制限にします。 |
システムデータへのアクセスをロックしたり、ユーザ認証を要求したくない場合に使用します。 このオプションは、許可を設定することによってアクセスをロックするまで、ユーザが管理操作を実行したり、ディレクトリリストを表示したりすることができることを意味します。サーバとオブジェクトに対するデフォルトのセキュリティを参照してください。 -nオプションを実行している場合は、Fullモードを指定して、サーバ管理ユーザ名とパスワードも指定する必要があります。 例: SilverMasterInit -n -f -U |
-O table space |
SilverMasterに対して指定したOracleテーブルスペースにすべてのAgテーブルを作成します。 |
このオプションは、Oracleを使用してSilverMasterデータベースを作成する場合に使用します。Oracleデータベースによってデータが保存される方法のために、SilverMasterテーブルオブジェクトに対しては、(デフォルトよりも)さらにスペースを割り当てる必要があります。 例: SilverMasterInit [-f |
-P dbpassword |
SilverMasterにアクセスするためにアプリケーションサーバによって使用されるデータベースパスワードを指定します。 |
データベース管理パスワードと関連ユーザアカウントは、サーバのインストール中に、暗号化されてレジストリに保存されます。サーバでは、指定したアカウント名とパスワードを起動時に使用して、SilverMasterデータベースにアクセスします。 例: SilverMasterInit [-f |
-p properties file |
指定したファイルから起動プロパティを読み込みます。 デフォルトは、サーバの\Resourcesディレクトリにあるhttpd.propsです。 |
デフォルト以外のSilverMaster起動プロパティファイルの名前と場所を指定する場合に使用します。 プロパティファイルオプションをSilverMasterInitで設定したら、新しいプロパティファイルを使用するために、コマンドラインからアプリケーションサーバを-pオプションとともに起動する必要があります。 例: SilverMasterInit [-f |
-r |
SilverMasterリソースを更新するためにRefreshモードで実行します。 |
このプロセスでは、Fullモードによって使用されるデータベースのインストール手順の一部をスキップします。このオプションは、既存のユーザ、グループ、およびライセンスデータを削除したくない状況においてSilverMasterシステムデータとリソースを更新する場合に使用します。 例:
|
-W adminpassword |
アプリケーションサーバにログインして管理するために使用されるサーバ管理者アカウントパスワードを指定します。 |
サーバを管理するには、サーバ管理者ユーザとアカウントパスワードを使用します。 Fullモードのデータベース初期化を実行する場合は、サーバ管理アカウント名とパスワードを指定する必要があります。 例: SilverMasterInit -f -U |
-U dbusername |
アプリケーションサーバのSilverMasterデータベースユーザアカウントを指定します。 |
データベース管理ユーザアカウントと関連パスワードは、暗号化されてレジストリに保存されます。サーバでは、指定したアカウント名とパスワードを起動時に使用して、SilverMasterデータベースにアクセスします。 例:
|
-v |
SilverMasterInitが実行されているときに詳細出力を生成します。 |
プロセスに失敗した場合に、このオプションを実行して、エラーが発生した場所を識別します。 例:
|
-x |
SilverMaster初期化プロパティを表示した後、SilverMasterInitを開始せずに終了します。 |
ローカルサーバ起動プロパティを表示する場合に実行します。このオプションを使用しても、プロパティは変更または更新されません。このデバッグオプションは、誤って指定されている初期化設定をチェックするために使用します。 例:
|
インストール中に作成されるSilverMasterデータベースは、SilverMasterInitを使用して再作成したり更新したりすることもできます。SilverMasterデータベースでは、アプリケーションサーバによって使用されるすべての展開データベースを追跡し、また、アプリケーションサーバのシステムテーブル(グループ、ユーザ、およびライセンス情報のテーブルを含む)も保持します。各サーバまたはクラスタには、SilverMasterカタログが1つ存在します。
SilverMasterデータベースの詳細については、展開データベースの設定を参照してください。
SilverMasterデータベースが壊れた場合は、SilverMasterInitを実行できます。アプリケーションサーバを起動できず、他に何をしても解決できない場合は、次のいずれかの方法を試してください。
警告: 接続に関する問題は、壊れたドライバ接続、壊れた展開データベース、またはネットワーク問題が原因の可能性があります。サーバに関する問題の原因について質問がある場合は、SilverMasterInitを実行する前にNovell exteNd テクニカルサポートまでご連絡ください。SilverMasterInitをFullモードで実行すると、既存のシステムテーブルのコンテンツがすべて削除され、初期化されたデータで置換されてしまいます。既存のシステムテーブル(展開済みのJ2EEアーカイブ、グループ、およびユーザデータのテーブルを含む)を保持する場合は、Fullモードで実行しないでください。
SilverMasterInitは、Refreshモードで実行して、SilverMasterプロパティをアップグレードしたり、SilverMasterプロパティにアクセスしたりできます。更新プロセスでは、Fullモードによって使用されるデータベースのインストール手順の一部をスキップします。既存のユーザ、グループ、および展開済みのJ2EEアーカイブを削除せずにSilverMasterシステムデータとリソースを更新するには、SilverMasterInitをRefreshモードで実行してください。
注記: アプリケーションサーバのインストールプロセスの一環として、SilverMasterInitではリソースを更新します。アプリケーションサーバは、インストールプログラムを実行することによって、通常は更新します。
SilverMasterInitをRefreshモードで実行する
SilverMasterInit -r options
「Creating Resources will take a few minutes; please wait」というメッセージが表示されます。
SilverMasterInitでは、SilverMasterが依存しているファイルやテーブルを誰かが削除または名前変更したことによって発生した問題を修正できる場合があります。アプリケーションサーバを起動できない場合、またはSilverMasterデータベースに接続できない場合は、SilverMasterInitの実行が必要な可能性があります。
SilverMasterInitでは、壊れたSilverMasterプロパティをリセットできますが、このプログラムでは、データベースに関連付けられている壊れたレジストリキー、設定ファイル、サンプルデータベース、またはファイルを修復することはできません。このようなタイプの問題を解決するには、インストールプログラムを実行してください。
データベーステーブルがすべて削除されないようにするためには、(Fullモードで実行する前に)SilverMasterInitをRefreshモードで実行してみて、サーバの問題が解決されるかどうかを確認してください。
SilverMasterInitをFullモードで実行して新しいSilverMasterプロパティを再生成する場合は、Silver Securityのユーザとグループの再作成、展開データベースの再追加、およびSilverMasterに展開されていたJ2EEアーカイブの再展開を行う必要があります。
SilverMasterInit -f options
「Creating Resources will take a few minutes; please wait」というメッセージが表示されます。
注記: データへのアクセスをロックしたり、ユーザ認証を要求したくない場合は、-nオプションをFullモードで実行できます。
SilverMasterInitを使用すると、ロックされたリソースへのアクセスを再取得できます。SilverMasterデータベースは、アプリケーションサーバによってシステムリソースと他のデータベースへのリンクがすべて保存される場所です。デフォルトでは、Locksmith権限を持つユーザには、SilverMasterへの読み込みアクセス許可が与えられます。SilverMasterデータベースへのアクセスを全ユーザに対して誤って拒否してしまった場合、SMCからアプリケーションサーバに誰もアクセスできなくなります。
SilverMasterへの読み込みアクセスが制限されている疑いがある場合は、次の節を参照してください。
デフォルトでは、Locksmith権限を持つ管理者と他のユーザは、データベース内にあるリソースのデータアクセス許可を取得して設定したり、すべてのSilverMasterリソースを読み込んだり、Locksmith権限を他のユーザやグループに与えたりすることができます。Locksmith権限を与えることのできるユーザは、Locksmith権限をすでに持っているユーザだけです。Locksmith権限が与えられているアカウントをすべて削除してしまった場合は、SilverMasterInit Locksmithオプションを使用してこの権限をユーザに与え、リソースへのアクセスを再取得できるようにしてください。
注記: デフォルトでは、新しいインストールの後、またはSilverMasterInitをFullモードで実行した後、Locksmith権限が与えられた管理者アカウントが自動的に作成されます。
Locksmith権限を持つユーザは、SilverMasterにアクセスできると、リソースをロック解除したり、アクセス権限をリセットしたりできるようになります。
詳細については、Locksmith権限の使用を参照してください。
SilverMasterInit -l-U
dbusername-P
dbpassword
SMCまたはSilverMasterInitコマンドラインのいずれかから、サーバ認証を設定することができます。サーバ認証は、SilverMasterデータベースに対する読み込みアクセスを誤って制限してしまった場合に設定する必要があります。ユーザがSilverMasterにアクセスできない場合は、SilverMasterInitサーバ認証オプションを実行して、ユーザが最初にサーバに接続するときに自分自身を認証できるようにしてください。ユーザがSMCからアプリケーションサーバにログインすると、ログインリソースに対する要求が発行されます。SilverMasterへのアクセスが制限されている場合、ユーザは、データベースへの読み込みアクセスがないのでログインダイアログにアクセスできません。これは、SilverMasterに「ログイン」リソースが含まれているためです。
サーバ認証オプションを実行する場合は、FullモードまたはRefreshモードを指定する必要はありません。サーバ認証の設定後にサーバを再起動すると、サーバに初めてアクセスしたときに資格情報ダイアログボックスが表示され、ログインすることができます。
SilverMasterInit -a-U
dbusername-P
dbpassword
あいまいな状況では、スタックの制限を超えてしまう可能性があり、このような場合は、JVM (Java仮想マシン)によってjava.lang.StackOverflowErrorがスローされます。
Java環境におけるWindowsシステムでは、少なくとも2つのプログラムスタックがあり(JVM実装によってはさらに多いこともあります)、そのいずれかがオーバフローしてStackOverflowErrorをスローする可能性があります。
ハードウェアスタックは常に存在し、JVM自体でネイティブコードによって使用され、JIT (Just In Time)コンパイラでJavaバイトコードからコンパイルされるネイティブコードによって使用されます。
Javaバイトコードスタックは常に存在し、Javaメソッドのメソッドコール引数とローカル変数を一時的に保存するために使用されます。これは、JVMによって作成および管理される「ソフト」スタックです。
JVMで作成された各スレッドには、独自のハードウェアスタックとJavaスタックがあります。
デフォルトのスタックサイズが小さすぎると判断した場合は、各スタックのサイズを変更できます。ただし、スタックオーバフローエラーの最も一般的な原因は、メソッドが何度も再帰的にコールされた場合に発生するプログラミングエラーにあります。このような場合は、スタックのサイズを大きくしても、スタックオーバフローに関する問題は解決されません。スタックサイズを大きくしてみる前に、この種類のエラーがコードに含まれていないことを確認してください。スタックオーバフローが無限な再帰エラーに起因していない場合は、スタックサイズを大きくすることによってスタックオーバフローを修正できます。スタックがオーバフローするかどうかについては、試行錯誤してみて判断してください。
ハードウェアスタックのサイズは、実行可能ファイルのヘッダに保存されている値を使用して、オペレーティングシステムにより判断されます。実行可能ファイル(SilverServer.exe)では、デフォルトのスタックサイズが256Kに指定されています。
スタックサイズを変更するには、MicrosoftのEDITBINユーティリティを使用して、実行可能ファイルのヘッダを変更する必要があります。たとえば、SilverServer.exeのデフォルトのスタックサイズを512Kに変更するには、次のコマンドラインを使用します。
EDITBIN /STACK:0x80000 SilverServer.exe
ヒント: 実行可能ファイルを変更する前に、バックアップを作成しておいてください。
ハードウェアスタックのサイズを大きくしても問題が解決されない場合は、Javaスタックに問題がある可能性があります。JDKのドキュメントには、スタックサイズに影響を与える次の2つのコマンドラインオプションが紹介されています。
デフォルトは、それぞれ128Kと400Kです。これらのオプションは、JDK 1.2 (Java 2)ではドキュメント化されなくなりましたが、非標準(-X)スイッチとして持ち越されています。アプリケーションサーバ実行可能ファイルに対してこれらのオプションを設定するには、-Xではなく+Xを使用してください(アプリケーションサーバ実行可能ファイルでは、+オプションを、JVMに渡すオプションとして解釈します)。
アプリケーションサーバ起動オプションの詳細については、起動オプションの使用を参照してください。
たとえば、アプリケーションサーバに対するネイティブスタックとJavaスタックを両方とも最大の512Kに設定するには、次のコマンドラインを使用します。
SilverServer +Xss512k +Xoss512k
注記: デフォルトのスタックサイズ値を大きくすると、各スレッドに割り当てられる仮想メモリの量も増えます。仮想メモリは、有限なリソースではありますが、大きなものです(Windows NTのような32ビットのオペレーティングシステムでは、2Gまでの仮想メモリをプロセスで処理できます)。スレッドごとに必要な仮想メモリの量を増やすと、作成できるスレッドの数は少なくなります。(サーバでは、接続されているクライアントごとに1つのスレッドを使用するため)これによりサーバでサポートできる同時接続ユーザ数も少なくなることを理解しておくことは重要です。
この節では、分類されていなかった問題で解決しなければならない可能性のあるものの一部について説明します。
アプリケーションサーバがハングまたはループしているように見える場合は、各スレッドのリスト(スタックトレースも含む)を生成します。リストを生成しても、サーバは停止しません。
NetWareの場合 設定したロガーバッファサイズがスレッドスタック情報を処理するのに十分大きいことを確認してください(再コールおよびレイアウトは、大きな数に設定することが推奨されます)。
アプリケーションサーバプロセスのJVM IDを判断します。
java -show
スタックトレースを生成するには、次のように入力します。
java -showstacksXXXX
ここで、XXXXは、アプリケーションサーバプロセスのJVM IDです。
スタックトレースを表示するには、次の操作を実行できます。
UNIXの場合 アプリケーションサーバを実行しているプロセスを判断します。
ps -all | grep Silver
次のようなコマンドを発行します。
kill -3 SilverServer_process_ID
アプリケーションサーバにより、サーバが起動された元のウィンドウに、各スレッドがスタックトレースとともにリストされます。
Windowsの場合 サーバを起動したウィンドウで、<Ctrl>+<Break>キーを押します。アプリケーションサーバにより、各スレッドがスタックトレースとともにリストされます。
NTアプリケーションログでソケット例外メッセージを受け取る場合があります。 通常は、クライアントが一方的にソケットを閉じたことを示しているため、これが問題になることはありません。Internet Explorerなどのブラウザでは、接続がしばらくアイドル状態であるとこのような処理が実行され、デバッグ機能を使用して実行中に、サーバのコンソールにソケット例外として表示されます。
このような警告は、単に通常の状態を反映しているため、一般的に無視してかまいません。
Copyright © 2004 Novell, Inc. All rights reserved. Copyright © 1997, 1998, 1999, 2000, 2001, 2002, 2003 SilverStream Software, LLC. All rights reserved. more ...