バックグラウンドへ移動する前に、NSD は実行している構成を示すバナーを表示します。このバナーには、このサービスに割り当てられている TCP ポート番号 (既定ではポート 7038) が表示されます。
これらのコマンドは、NSD を正しい順序でクローズします。つまり、InterSystems IRIS との間でオープンしているすべての接続を正しく終了し、終了前にすべてのシステム・リソースを解放します。kill –9 コマンドを使用して NSD を終了しないでください。
代替 TCP ポートでの NSD の開始
既定では、NSD は TCP ポート 7038 で着信する要求を待ち受けます。以下のようにサービスを開始することでこれをオーバーライドできます。port_no は、指定する TCP ポート番号です。
./CSPnsd [port_no]
または以下のようにします。
./CSPnsd -p=[port_no]
開始時に、NSD は以下のファイルを作成します。
/opt/webgateway/bin/CSPnsd.ini
このファイルには、通常、以下の行が記述されます。
[SYSTEM]
Ip_Address=127.0.0.1
TCP_Port=7038
ここでは、クライアントは、Web サーバに格納された Web ゲートウェイ・モジュールまたは Web サーバに動的にリンクされる Web ゲートウェイ・モジュール、およびサーバから呼び出された Web ゲートウェイ CGI モジュール (またはこのどちらかのモジュール) です。したがって、このファイルを削除、または移動することはできません。また、Web サーバ・プロセスがこのファイルを読み取り可能であることも重要です。Web サーバを操作する UNIX® ユーザ名を考慮して、適切な特権を設定してください。NSD クライアントは、以下の場所でこのファイルを検索しようとします。
/opt/webgateway/bin
/etc
NSD が別のディレクトリで動作している場合、CSPnsd.ini ファイルを上記のいずれかの場所に移動する必要があります。
NSD の複数のインスタンスが実行されている状況で、CSPnsd.ini ファイルに NSD ポート番号を格納することは不適切です。Apache サーバの場合、NSD の TCP ポート番号をクライアントに伝えるためのより適切なメカニズムがあります。具体的には、Apache 構成で以下の環境変数を設定して、ターゲットの NSD インストールのアドレスとポートを指定します。
これらの環境変数に指定した値は、CSPnsd.ini ファイルの値よりも優先されます。
例 1 : 2 つの Apache 仮想ホスト
2 つの Apache 仮想ホスト (123.123.1.1 および 123.123.1.2) の負荷を、2 つの独立した NSD インストール (TCP ポート 7038 および 7039 で待ち受ける) 間で分散するには、Apache 構成 (httpd.conf) に以下の指示文を追加します。
<VirtualHost 123.123.1.1>
ServerName 123.123.1.1
SetEnv CSP_NSD_PORT 7038
</VirtualHost>
<VirtualHost 123.123.1.2>
ServerName 123.123.1.2
SetEnv CSP_NSD_PORT 7039
</VirtualHost>
例 2 : 2 つの Web アプリケーション
2 つの Web アプリケーション (/csp1 および /csp2) の負荷を、2 つの独立した NSD インストール (TCP ポート 7038 および 7039 で待ち受ける) 間で分散するには、Apache 構成 (httpd.conf) に以下の指示文を追加します。
<Location /csp1>
SetEnv CSP_NSD_PORT 7038
</Location>
<Location /csp2>
SetEnv CSP_NSD_PORT 7039
</Location>
Apache 構成の変更後は、Apache を再起動します。
NSD の複数のインスタンスを実行している場合は、各インスタンスを別々のディレクトリにインストールし、それぞれのインスタンスに専用の構成およびログ・ファイルを管理することをお勧めします。NSD の内部 HTTP サーバを使用すると、各インスタンスの Web ゲートウェイ管理ページに簡単にアクセスできます。以下に例を示します。
http://localhost:7038/csp/bin/Systems/Module.cxw
http://localhost:7039/csp/bin/Systems/Module.cxw
複数の NSD プロセスへの負荷分散
既定では、NSD は 2 プロセス処理モード (親ワーカ 1 つと子ワーカ 1 つ) で動作します。
ただし、1 つの UNIX® プロセスが起動できるスレッドの数には上限があります。同時に発生している Web アプリケーションの負荷により、要求が使用可能なスレッドのキューを作ってしまった場合は、NSD で使用されるプロセスの数を増やすことを検討してください。
./CSPnsd –c=[no_processes]
ここで、no_processes は開始される子 (またはワーカ) プロセスの数です。
子プロセスの数を 1 に設定することには長所があるということにも注目してください。
./CSPnsd –c=1
このような状況では、NSD により、親プロセス 1 つと子ワーカ・プロセス 1 つの合計 2 プロセスが開始されます。‘–c’ 指示文を使用しているときに、親プロセスが存在すると、ワーカ・プロセスの 1 つで障害が発生している場合に親プロセスがその処理を引き継ぐことができるため、NSD の復元力が向上します。単一のマルチスレッド・アーキテクチャでは、NSD は必ずしも重大な内部エラー状態から回復できるわけではありません。
ワーカ・プロセスの数が 2 つ以上の場合は、ステート認識接続 (保持モード 1) を使用しないでください。
NSD に対する管理者権限の付与
NSD (CSPnsd) コンポーネントの管理者は、このサービスの開始/停止が許可されたユーザ (またはグループ) を一部制御することができます。
既定のシナリオでは、CSPnsd マスタ・プロセス ID (PID) ファイル (CSPnsd) は、サービスを開始したユーザのみがその後サービスを終了できるように作成されます。
例えば、管理者は、現在の UNIX® グループに属するすべてのユーザがサービスを管理できるように選択することができます。 これは管理ユーザが属するグループです。
NSD start-up option: [-m=s]
Define the user(s) permitted to manage this service
where 's' is:
'u' for the current user (the default),
'g' for the current group,
'o' for others,
'a' for everyone (m=ugo),
例:
./CSPnsd -m=ug
これにより、現在のユーザ・グループ内の現在のユーザおよびその他すべてのユーザが NSD を管理できます。
NSD を停止するコマンドが発行されると、まず CSPnsd 親プロセスに以前と同様にシャットダウンするようシグナルを送信しようとします。 サービスが別のユーザによって開始されたためにこれが不可能な場合は、CSPnsd.ini ファイルにフラグが書き込まれ、サービスはこのフラグを認識したときに自体を正常に終了します。 このプロセスの完了には、最大 20 秒かかります。