Nextra製品に関するQ&A
・ GENERAL について ・ PERFORMANCE について ・ RPC Debug について ・ DB Access について ・ DEDICATED SERVER (デディケイテッド・サーバ) について ・ API について ・ データ型/IDLファイル について ・ AppMinder について ・ VBクライアント について ・ セキュリティ について ・ ブローカの階層化 について ・ SAPMake について ・ COBOL について ・ 運用・設定 について
Nextra(ネクストラ)は、Grid Computing(グリッド・コンピューティング)なのですか?
Grid computing(グリッド・コンピューティング)は、そもそも分散コンピューティングのサブセットであり、Nextraを使用してGrid的なアプリケーションを構築することは十分可能です。 Grid 製品の殆んどは、Middleware(ミドルウェア)がベースとなっています。
ページの先頭へ
他のミドルウェアに比べて、Nextraの通信スピードは?
ユーザアプリケーション、マシン環境、ユーザ環境により直接比較は難しいですが、通信に限って言えば、CORBAやMQ(メッセージキューイング)に比べ、圧倒的なスピードを誇ります。 その理由は、Native Socketを直接利用して通信を行っているからです。
また、Nextra は フェイルオーバー 、 ロードバランス 、 監視機能 を標準搭載しているにも関わらず、新機能の MTT (Multi Threading Techonology) により、 1 トランザクション 、 1 ミリ秒以下 の高速 処理を提供します。 ページの先頭へ
開発時におけるメリットを教えてください。
3 層分散アーキテクチャーに沿った開発を支援するNextra では、通信・OS レ ベルのAPI プログラミングは必要ありません。各プログラム言語用の通信イン ターフェースをNextra 開発ツールにより自動生成し、異なるプログラム言語間 の容易なモジュール連携を実現します。開発は各層(プレゼンテーション層、 アプリケーション層、データ層)同時に並行して進めることができ、開発者は ビジネス・ロジックだけに注力することができます。さらに、Nextra が提供す るテストツールを使用すると、クライアントプログラムの作成を待たずに、サ ーバプログラムのテストを行うことができます。
Nextra は、異種混合システム環境下に適応し、現行のNextra をベースとする アプリケーションは、ロジックの変更なしに異なるOS、RDBMS への移行、 また別アプリケーションとの連携も可能です。メインフレームからのダウンサ イジング、Unix からWindows やLinux へのポーティングにも最適です。
Nextraの障害回避機能について
Nextra runtimeにはアプリケーション・クラスタリング機能が実装済みであり、以下の障害に対応します。 1. Process ダウン 2. N/W ダウン 3. OS ダウン 当該Processがダウンしていた場合、かつ同じセットのサーバプロセスが起動していた場合は、そのサーバプロセスを使用するようにNextra runtime内でルーティングします。 当該サーバプロセスに到達できない場合、かつ同じセットのサーバプロセスが別ルートで到達できるサーバマシン上で起動していた場合は、そのサーバプロセスを使用するようにNextra runtime内でルーティングします。 当該OSがダウンしていた場合、かつ別サーバマシン上に同じセットのサーバプロセスが起動していた場合は、そのサーバプロセスを使用するようにNextra runtime内でルーティングします。
現在使用しているSolaris版Enteraから、linux版Nextraに移行する場合のユーザアプリケーションの互換性は?
1992年に米国MITで開発され、3層分散アーキテクチャの実装を最初に行った開発・運用ミドルウェア「Nextra(ネクストラ、旧称Entera)」の思想の1つに、長年使用される基幹業務アプリケーションの実行環境、すなわちOS、言語、RDBMSのversion up、変更などに対しても、ミドルウェア「Nextra」で差異を吸収し、ユーザコード(資産)を保護するというものがあります。 Nextraの開発ツール(RPCMake、SQLMake、TPMake)を利用していただき、その後コンパイルしていただくだけで、特にユーザコードに変更は必要ありません。
Nextraで、DBトランザクション機能はありますか?
1サーバプロセス内からの DB トランザクション制御は可能です。 「開発ソフトウェア」として提供されている「TPMake」を使用し、「トランザクション・サーバ 」を作成することができます。 2フェーズコミットや、2サーバプロセス以上からのトランザクション制御に関しては、Nextra/Javaアプリケーション・サーバから、xaインターフェースを利用して、2PC(2フェーズ・コミット)を実現できます。 製品付属のサンプルを参照してください。
1つのクライアントプロセスは複数のサーバプロセスにアクセスできますか?
はい。 1つクライアントプロセスは複数のサーバプロセスにアクセスできます。 また、サーバプロセスも複数のクライアントプロセス要求に応答できます。 ページの先頭へ
RPCDebug は、クライアントプロセス以外の働きをしますか?
いいえ。 RPCDebug は、Nextra サーバプログラム内にある関数をテストするためのツールです。 この RPCDebug を使用することにより、クライアントプログラムが未完成でも、Nextra サーバプログラム内にある関数のテストを行うことができます。
UNIX 上でNextra モジュールを起動させようとした時に、"Can't open shared library..."というようなエラーがでます。 どうしたらよいでしょうか?
これは、AppMinderを構成するモジュールが Shared library(Windows上ではDLL)を使用しているので、Shared libraryに PATH を通さなければいけません。
SQL 文は標準フォーマットで記述されますか?
Nextra は、標準 SQL に若干手を加えて使用します。 (詳細は『リファレンス』を参照のこと)
メインフレームをダウンサイジングするツールを探しています。Nextra は COBOL、VB/PB、UNIX/Windows の環境で RPC を用いた C/S を構築可能ですか?
可能です。Nextra は VB/PB のための通信コーディングを自動化し、サーバモジュールは UNIX/Windows のどちらの環境でも開発できます。 また、開発言語としてMFCOBOLをサポートしていますからCOBOL での開発を行うことができます。 メインフレーム上で開発を行ってきたスタッフのスキルを活かしながら3層 C/S アプリを開発するのに最適です。
3層構造とは何ですか?
システムの機能を論理的に階層化、効率的に配置することによりビジネスニーズに即応するエンタープライズ・オペレーティング環境を実現するアーキテクチャです。3層構造 C/S アーキテクチャでは、C/S システムをプレゼンテーション層、ファンクショナリティ(または、アプリケーション)層、データ層の3層に論理的に階層化しています。
プレゼンテーション層 情報の要求と表示を行います。システム利用者とのインタフェースで、実際には GUI 開発ツールなどにより構成されます。 ファンクショナリティ(アプリケーション)層 情報の処理・加工しデータベース、メインフレームへの接続を行います。アプリケーション処理に関するすべての業務を実行します。他のシステムとの接続や実行システムの管理、セキュリティ管理といった機能もすべてこの層に含まれます。 このファンクショナリティ層は2層構造の発想にはなく、プレゼンテーション層とデータ層の間の業務処理を行う中間層として位置づけられます。 データ層 すべての情報の提供を行います。 データとしてはメインフレームに構築されたデータや、場合によっては既存のアプリケーションシステムそのもの、またRDBMS を用いてワークステーション上などに構築されたデータベースが含まれます。 Nextraではそれぞれの層をRPC(Remote Procedure Call)を利用し、TCP/IPを経由して通信されます。
1.1J、Entera2.1J で開発されたサーバプロセス、クライアントプロセス、ブローカは、Entera3.1J、Entera3.5J、Entera3.6J で開発されたものと互換性がありますか?
互換性はありません。 但し、サーバプロセス、クライアントプロセスの再コンパイルと再リンクは必要です。 ページの先頭へ
パフォーマンスについて、『Nextra Tuning Guide(英語のみ)』、および 『運用/設定ガイド』をご覧下さい。
RPCDebug ユーティリティーを使用してサーバプログラムの機能をテストする際に、改行を含む大きなデータを入力したいのですが、どうしたら宜しいのでしょうか?
コマンドラインで rpctest を使用するか、簡単なクライアントプログラムを作成してテストをしてください。 rpctest は RPCDebugユーティリティー と同じ機能を持つサーバプログラムテスト用のクライアントツールです。 RPCDebug は内部で rpctest を使用しています。Perl スクリプトを書くことでテストの自動化もできます。 <rpctest を使用して、データファイルを読み込む方法を記載します。> #INDATA 引数に、indata.txt よりデータを代入する。 RPCTEST>open(IN, 'indata.txt'); RPCTEST>$INDATA = join('', <IN>); RPCTEST>close(IN); #代入終了。
RPCTEST>open(IN, 'indata.txt'); RPCTEST>$INDATA = join('', <IN>); RPCTEST>close(IN);
SELECT文を実行したときに、テーブルの値がNULLであるとき、要求元のAPに"NULL"という文字列が返されるようですが。
NULLはデータではない特殊な値であることから、DB Accessモジュールの中でStringの"NULL"を文字列として挿入しています。 Create 文にてNOT NULLを指定して、NULLを許容しないことをお勧めします。 "NULL"文字列以外を設定したい場合は、Nextra環境変数「DAP_NULL_CHAR」を指定してください。 たとえば、"9999"という文字列を"NULL"のかわりに指定したい場合。 UNIX ksh の場合: >export DAP_NULL_CHAR=9999
Oralce*Netを使用したいのですが、ora_start、TP(トランザクション)サーバでの設定方法を教えて下さい。
先ず、ORACLE_SIDを環境変数として設定していた場合は、設定をしないようにしてください。
・ ora_start使用の場合 ora_start起動時の -d オプションに、tnsnames.oraで指定されたサービス名を指定してください。 ・ TP(トランザクション)サーバ使用の場合 リソースファイル(.res)の中のdatabase指定カラムにて以下のように指定してください。
DB名|サービス名 *DB名:リモートDB名 *サービス名:tnsnames.oraで指定されたサービス名 その後、TPMakeにてファイル生成後、コンパイルしてTPサーバをビルドしてください
DBのバージョンをアップしましたが、 今まで使用していた DB_start が起動できません。どうしたらよろしいでしょうか?
弊社サポート、または営業までご一報下さい。
ストアードプロシージャを使う場合に、SQL ファイルにどのように記述したらよろしいでしょうか?
update_namelist: {BEGIN tako($a, $b)\; END \;\;}; update_namelist は RPC 名、tako はストアードプロシージャ名になります。 サーバ開発者ガイドを参照してください。
デディケイテッド・サーバ子プロセスを終了させるには、どうしたらよろしいでしょうか?
通常、クライアントプログラムが終了すると、デディケイテッド・サーバ子プロセスは終了します。 クライアントプログラムから確実に終了するには、dce_dedDisconnect関数をクライアントプログラムから呼び出し、デディケイテッド・サーバ子プロセスを終了させます。
デディケイテッド・サーバを使用するとたくさんログファイルが作成されてしまいます。どうしたらよろしいでしょうか?
定期的に削除してください。
デディケイテッド・サーバで、子プロセスはスタティクなメモリ領域は親プロセスとシェア出来るのでしょうか?
出来ません。
デディケイテッド・サーバを使用する場合、子プロセスの生成は具体的に何と言う関数で生成されるのでしょうか?
UNIX プラットホームでは fork 関数、Windows では CreateProcess 関数です。
broker(ブローカ)キャッシュにあるサーバ位置情報を、クライアントプログラムから削除できますか ?
dce_remove_all_server()は、クライアントプログラムから呼び出され、サーバ(インタフェース)名を持つサーバ(インタフェース)全ての位置情報をブローカのキャッシュから削除します。 このAPIを、.NETやJavaクライアントから利用することも可能ですが、その場合はサポートにお問い合わせください。 その他、クライアントプログラムで現在使用しているサーバの位置情報を削除するAPIも用意しております。 dce_remove_bad_server()は、クライアントからRPC呼び出し後に呼び出され、使用したサーバ(インタフェース)名を持つサーバ(インタフェース)の位置情報をブローカのキャッシュから削除します。 尚、これらのAPIは、Nextra5にてサポートされるようになりました。
また、broklist ユーティリティーを使用することで、起動していないサーバのエントリーをbrokerキャッシュより削除したり、特定のエントリーを削除することができます。
プロセス kill 以外に、Nextraサーバプロセスを終了する方法はありますか?
Nextraサーバ内ユーザプログラム内で、dce_set_exit() を呼び出します。 Nextraリファレンスマニュアル「第5章 Nextra API」の「dce_set_exit()」を参考にしてください。
クライアントプロセスがアクセスしようとしているサーバプロセスの立ち上がっているサーバマシンの IP アドレスとサーバプロセスのポート番号を知る API ファンクションはありますか?
公開された API ファンクションとしては、残念ながら存在しません。
VB の Byte 型は?
VBのByte型は 1byte なので、IDL ファイル内では、1) VB の16ビット用には char で、2) 32ビット用には void で定義します。
IDL 定義ファイルで指定できるデータタイプは?
short, long, integer, float, double precision, character, void。 Nextra マニュアル 「リファレンス」 のデータ型情報 3-1 を参照して下さい。 ページの先頭へ
AppMinderを使用すると、brokerやアプリケーションのエラーフィル(Error File)が生成されますが、本番稼動ではリソース確保のためエラーファイルを生成しないようにしたいのですが、可能ですか ?
brokerやアプリケーションに対して"Edit"ボタンから "File"をクリックして"Error File Name"に「null」と指定してください。 "Error File Directory"は任意で構いません。
指定先がUnixの場合は、"Error File Name"に「null」と指定し、"Error File Directory"には、「/dev」と指定してください。
AmViewer(ビューア)が応答しない時はどうしたらよいでしょうか?
この状態は、通常 ammon(モニター)がサーバマシン上で監視を行っている agent(エージェント)との通信で待ちになっている可能性があります。 その agent(エージェント)自体も、実際には、アプリケーションの起動、アプリケーションプロセスへのPING、更にはブローカ(アプリケーション用)との通信でBusy(ビジー)の状態にある可能性があります。ですので、暫く待ててば、AmViewer(ビューア)は応答するようになるでしょう。 ただし、どうしても待てない場合や、最悪の場合は、以下を行ってください。 1. AmViewer(ビューア)をタスクマネージャで強制終了する。プロセス名は、amviewer.exeです。 2. そして、AmViewer(ビューア)が繋ぎに行っている ammon(モニター)も強制終了してください。 プロセス名は、ammon.exe(Unixでは ammon )です。 3. その後、ammon(モニター)の起動、AmViewer(ビューア)を立ち上げ、繋ぎ直せば、アプリを再度監視することができます。
AmViewer(ビューア)を使用せずに、自動的にアプリケーションの起動、停止を行うことはできないでしょうか?
amlodsvr コマンドユーティリティーをご利用ください。停止する場合は、amuldsvr になります。
AppMinderにて「Begin Managing」を実行した場合に、全てのプロセスが「Pinged」になるまでの時間を変更することは可能でしょうか? 設定ファイル等で処理時間を短縮する方法があれば教えてください。
appmagt.ini ファイルの中の AMAGENT_PROC_START_PAUSE の値を変更してください。 初期値は100(秒)です。
エージェント(appmagt)の管理サイクルを短くするにはどうしたらよいのですか?
appmagt.ini ファイルの中の AMAGENT_MGMTINTERVAL の値を変更してください。初期値は120(秒)です。
一つのマシン上に複数のエージェント(appmagt)は起動できますか?
起動できます。詳しくは、『運用/設定ガイド』「第3章アプリケーションの設定」を参考にしてください。
AmViewer でプロセスを監視する際に、プロセスのステータスで黄色い三角印や、緑色の三角印が出てきますが、それぞれの意味を教えてください。
『AppMinder マニュアル』第4章にある「プロセスのステータスシンボル」を参照してください。
AmViewer を使用してサーバプロセスを起動しようとすると、エラーになってしまいます。(一番上のマスターブローカが赤丸表示になってしまいます。) エラーを改善し、サーバプロセスを起動する方法を教えてください。
一度 AppMinder 環境を再設定してから、AppMinder プロセスを起動してください。 *.lst, *.mem, *.ini, *.cdb ファイルを削除して、ammon と appmagt の ini ファイルを再作成してください。
また、AppMinderを利用してアプリケーションの起動を行ったが、AmViewerやamuldsvr コマンドユーティリティーを使用せずにアプリケーションを強制終了させてた場合、*.lst, *.mem,?*.cdb ファイルの削除後、ammon.ini に「AMMON_ACTIVE=」の行が存在した場合はその行を削除してから、再度 ammon, appmagt の起動を行ってください。
AppMinder のスケジュール画面で設定時間の上限が 23:59 となっているがそれ以上の設定は可能ですか?
上限は 24:00 です。それ以上の時間を設定すると(たとえば 24:10 と設定すると) 24:00 とみなされます。
モニターのログに意味不明なデータが書き出されるのですが、これは必ず出力されてしまうのでしょうか?
AppMinder のコンポーネント間でやり取りされている情報は、常に暗号化されているため、この情報がログに書き出されると意味不明な情報にみえてしまいます。 モニタの環境ファイルのログレベルを「warning, debug」にしておけば、情報が書き出されなくなります。
AppMinder で月単位でのスケジュールはどのように行うのですか?
月単位でのスケジューリング機能は現在サポートされていません。
AppMinder が起動・監視している特定のサーバプロセスを自動で停止し、起動するような事は可能でしょうか。
可能です。 以下のいずれかの方法で対応してください。 1. AmViewer のスケジュール機能を使用する。 2. AppMinder で用意されている、API ファンクションを利用して AppMinder クライアントを作成し、タイムスケジュールに従ってこのクライアントを実行する事によって行えます。
AppMinder で監視できるサーバ数に制限があるのでしょうか?
ありません。
VB6で作成したモジュールが、ランタイムエラーになります。
最適化を指定して作成したモジュールを使用すると、ランタイムエラーなる場合があります。「最適化なし(O)」を指定して、再ビルドしてください。 VB6 IDEの 「プロジェクト(P)メニュー」より、 xxxのプロパティ(E) -> コンパイル -> ネイティブコードコンパイル(N) -> 最適化なし(O) のオプションボタンを選択してください。
クライアントアプリケーションで Visual Basic を使用していますが、RPC を行うときに「… メモリが”read”になることはできませんでした。」というアプリケーションエラーが発生し、クライアントアプリケーションが終了してしまいます。 何か考えられる原因はありますか?
Nextra API の int dce_error(char * msg) 関数で正しい引数を渡しているか確認してください。 この関数では、ユーザが割り当てるメモリスペースへのポインタを引数として渡し、そのスペースにエラーメッセージを書き込みます。 そのため、エラーメッセージの長さより少ないメモリスペースへのポインタを引数として渡した場合はアプリケーションエラーが発生します。下記の例のように、250 文字の固定長文字列分のメモリスペースを確保してから dce_error() 関数を使用してください。 Dim dce_errstr As String dce_errstr = Space$(250) .. rpc_call() .. rv% = dce_error(dce_errstr)
Dim dce_errstr As String dce_errstr = Space$(250) .. rpc_call() .. rv% = dce_error(dce_errstr
VB32 ビットクライアントと 32/64 ビットのサーバマシンの間で int 型のデータを使っているとデータの不整合が起こります。
この組み合わせのマシンでは int データ型に割り当てられるバイト数が違うので問題が起こります。 整数データを扱う場合は、必ず long 型を使用します。
Nextra を NAT の外から使用するにはどうすればよいですか?
クライアントからブローカにサーバの IPアドレスが要求されたとき(@)、DCE_EXTCLIENT に記述された IP_client1(A)と、問合せクライアントの IP アドレスが一致した場合、且つ現在ブローカに動的に登録されているサーバIPアドレス(B)と、DCE_TRANSCRIPTの IP_server1が一致する場合に、アドレス変換表に記述されている IP_server2 をクライアントに返します。
例: DCE_EXTCLIENT=211.168.0.255 DCE_TRANSCRIPT=192.168.0.112, 211,168.0.112 問合せクライアントの IP アドレスが211.168.0.100であった場合で、かつ当該サーバプロセスのIPアドレスが、192.168.0.112としてbrokerのキャッシュにサーバのIPアドレスが登録されていた場合、サーバプロセスのIPアドレスは、211.168.0.112としてクライアントプロセスに渡されます。
クライアントがサーバプロセスにアクセスした時に、Error No = 5 が返されるが、1) サーバプロセスに対してアクセス権がない(セキュアサーバ)、2)サーバプロセスが起動していないの区別ができない。 これを判断する方法はないのでしょうか?
dce_querybroker() をコールして、アクセス可能なサーバプロセス一覧を取得する。これにより、1) の判断が可能となります。 ページの先頭へ
Nextraで、GUI層をFireWallの外に、それ以外のブローカ・サーバプロセス・その他を FireWall内に置くような設定は可能でしょうか?
Nextra では、ブローカのポート番号は運用者が環境ファイルに書き込むことにより指定することが出来ます。 サーバプロセスのポート番号は OS がサーバ起動時にアサインするのですが、環境ファイルの DCE_SERVERPORT で運用者が指定することが出来ます。 その為、ブローカ、サーバプロセスを FireWall 内に置くような設定は可能です。 ページの先頭へ
あるクライアントプログラムを複数個同一マシン上で動かす際、ソースコードを変えずに、異なるサーバマシンに rpc することは可能でしょうか? (クライアントAと B は同じプログラム。共に srv1 と言うサービスをコールするが、クライアントAからはサーバAの srv1 に、クライアントBからはサーバBの srv1 に rpc したい。)
可能です。 方法としては、ブローカの階層化の機能を使用して、並列ブローカにサーバを登録し、それぞれのクライアントがそれぞれのブローカにサーバプロセスの照会を行うようにするというものです。 その時、DCE_LOCAL を環境ファイルにセットして、親ブローカに行かないようにするという方法もあります。 また、クライアントのコードを共用したいのであれば、例えば、サーバはバリアブルネームド サーバにしておきます。(名称は"サーバ A_srv1"のようにするとわかり易いでしょう。) クライアントが srv1 を呼び出す際にアクセスするサーバプロセス名を判断するようなロジックをクライアントに組み込んでおき"サーバをコールする方法がとれます。
外部連携モジュールを使用することによりブラックボックス化され、万が一の時のメンテナンスに支障をきたすことは考えられますか?
SAPMakeは、RFC(R/3側)とRPC(Nextra側)のプロトコル変換を行うCソースコードを生成します。必要であれば、開発者がこのCソースコードに変更を加えることも可能です。
SAPMakeで作成された外部連携モジュールは、R/3のバージョンアップに追随できるのですか?
基本的に、R/3のバージョンアップに左右されません。もともとv3.0cで使用していたモジュールを、そのままv4.6dで使用している例もございます。 ページの先頭へ
SAPMakeで作成された外部連携モジュールを使用することにより、SAPのユーザライセンスを増やさなければいけないのでしょうか?
これは、ご利用するユーザ様のポリシー次第です。外部連携モジュールのログオン用に最低1ユーザが必要ですが、別々のユーザでログオンすることも可能です。 ページの先頭へ
サーバ上で別プロセスから起動される COBOL プログラムを、Debugger でデバッグできますか?
MicroFocus COBOL のユーザで、かつ Server Express では、CBL_DEBUGBREAK ルーチンを使用して、サーバ上で別プロセスから起動されている COBOL プログラムをダイナミックにアニメートする機能が追加されています。 サーバーコードの PROCEDURE DIVISION でデバッグを始めたい個所に CALL "CBL_DEBUGBREAK" を挿入し、コンパイル時に cob -xeg "RPCMAIN" でコンパイルすることで、クライアントや別プロセスから呼び出しがかかった時点でアニメータが自動的に起動されてデバッグができます。
Windows サーバ上にて、大量の Nextra サービスを起動するシステムにおける、 Windows レジストリの設定
Nextra の全てのサービスは、 TCP/IP ポートを通じて通信しますが、大量に Nextra サービスを起動する場合には、以下のレジストリの変更、または追加が必要になります。
TcpTimedWaitDelay http://support.microsoft.com/kb/120642/
MaxUserPort http://support.microsoft.com/kb/196271/ja ページの先頭へ
killer ユーティリティーが正しく動作しない
Windows2003の一部で、killer ユーティリティーが正しく動作しない場合が報告されています。 これは、Windows上のセキュリティーの設定によるもので、この現象に遭遇した場合は、Windowsが提供する「taskkill」をご利用ください。 ページの先頭へ
サーバ位置情報が、2つ目に指定したbrokerに登録されていた場合
クライアント環境ファイルに、「DCE_EXTSEARCH=1」を指定してください。DCE_BROKER属性に複数のブローカが登録されていて、例えば1番目のbrokerと接続できたが、そのbrokerに目的のサーバが登録されていない場合、次に登録されているbrokerに目的のサーバを探しに行きます。この属性が設定されていない場合、最初のbrokerにサーバが登録されていない時点でエラーとなります。 ページの先頭へ
Backlog Queue(バックログ・キュー)の設定について
brokerに大量のサーバを同時に登録する場合や、Nextraアプリケーションサーバに対して大量の同時アクセスが発生した場合に、TCP/IP PortでBacklog Queue(バックログ・キュー)に入ることができなかったリクエストは、Queue(キュー)溢れ(Time Out)になります。 これが発生した場合、Nextra/RPCライブラリでは、並列サーバなどに迂回する機能を備えておりますが、Queue溢れになる状況は好ましくありません。 参考までに、Queue溢れが起こった場合は、Unixでは"ETIMEOUT" 、Windowsでは"WSATIMEOUT"のシステムエラーとなり、Nextra環境ファイルで指定したログファイルに記録されます。 これを回避するために、Nextraランタイムでは、環境変数「LISTEN_QUEUES」 をご提供しております。 実行する環境にて、この環境変数を適切に設定してください。 設定有効値は 1〜INT_MAX でデフォルト値は 5 となっています。 この環境変数「LISTEN_QUEUS」で指定した値は、Queueのサイズを指定するもので、実際のBacklog Queueの数ではありません。 各プラットフォームでのBacklog Queue数は、LISTEN_QUEUES指定値のおおむね1.5〜2倍になります。同時並列処理が必要なアプリケーションの場合には、並列サーバを利用するか、デディケイテッド・サーバ(Dedicated Server)を利用してください。
broker(ブローカ)やNextraサービスのレスポンスが突然悪くなります。WAN環境で利用していますが、何か関係ありますか?
WAN環境で利用の場合、PCクライアントとの接続が突然切れる場合などが考えられます。Nextra/RPCライブラリでは、そういった状況に対応するために、以下の環境ファイル属性をご提供しております。
*)Nextra3.6では、LONG_MAXになります。
DCE_CLN_TIMEOUTは、クライアント側RPCにて、データを受信する際に通信がTOする時間を指定します。DCE_SVR_TIMEOUTは、サーバ側RPCにて、データを受信する際に通信がTOする時間を指定します。DCE_RECEIVETIMEOUTに値を設定すると、DCE_CLN_TIMNEOUTとDCE_SVR_TIMEOUT両方にこの値が設定されます。 詳しくは『リファレンス』「環境ファイル属性」を参照してください。
その他、サーバマシンのTCP/IP Kernel パラメータにおける、TCP/IPメッセージ送信のトータルの再送タイムアウト(RTO)の値の設定が必要な場合があります。 この再送時間を短縮するには、各OSのTCP Kernel パラメータのチューニングが必要になります。 Solaris/HP-UXでは、tcp_ip_abort_intervalがそのパラメータになります。 AIX 5Lについてはこちらを、Windows 2003についてはこちらを参照してください。その他のOSについては、各OSのマニュアルをご確認ください。
broker(ブローカ)キャッシュにあるサーバ位置情報を間違って削除してしまいました。どうしたらよいですか?
broklistユーティリティーの "-add"オプションで、再度登録することができますが、ご利用する際には、サポートにご連絡ください。
Nextra サーバプログラム(A とします)を夜間に起動・停止しているのですが、翌朝、ブローカに Aプロセスの古い位置情報が残ります。どうしたらよろしいでしょうか?
クライアントプログラムからのアクセスにより、ブローカ(broker)キャッシュにあるサーバ位置情報が更新され、古い情報は自動的に削除されます。強制的にブローカ(broker)キャッシュにあるサーバ位置情報を更新したい場合は、broklist ユーティリティーを利用してください。
>broklist -update HOST_NAME PORT