PB 電子会議室

コメント

発言No. 更新日 題名(クリックすると発言内容と関連するコメントが表示されます)
11118 00/04/21 17:52:04 RE(1):PB6.5: CGIアプリに複数クライアントからアクセスすると異常終了します By Tk
8633 99/10/07 22:18:41 PB6.5: CGIアプリに複数クライアントからアクセスすると異常終了します By kouyamat

カテゴリ:インターネットアプリケーションの構築
日付:2000年04月21日 17:52 発信者:Tk
題名:RE(1):PB6.5: CGIアプリに複数クライアントからアクセスすると異常終了します

半年も前の発言に対していまさらという感もありますが、
私も以前から頭を悩ましていた問題でして、最近ようやく
解決策を見つけたので、書いておこうと思います。

>現在Web.PBでCGIアプリを開発しているのですが、データベースに接続して処理を行うCGIを複数クライアン
トから
>発行すると、CGIアプリが異常終了(ワトソン博士が登場)してしまいます。
>どうもアドレス違反が起きているようなので、以下のような対策をしてみましたが効果がありません。
>1.グローバル変数の使用をやめて、すべてローカル、インスタンス変数で処理する。
>2.共通関数の使用をやめる。
>(DBParm=\"ThreadSafe=\'YES\'を設定したところ、症状が悪化してしまいました。)

(中略)

>ちなみに、
>DBMSはOracle8.0.5、
>DBMS=\"O84 ORACLE 8.0.4\"(pbo8460J.dll)でネイティブ接続しています。

この現象は「同時に複数のCONNECTを実行しようとした」場合に発生します。
Web.PBアプリでは、NVOのConstructorでCONNECT、Destructorで
DISCONNECTするのが一般的なスタイルかと思いますが、複数の
クライアントから同時に接続した場合、あるいはフレームを
使用したページの場合、NVOの複数のインスタンスがほぼ同時に
生成され、同時にCONNECTを実行することになりますが、これが
良くないようです。
排他制御を行って、あるインスタンスがCONNECT待ちの間は
他のインスタンスはCONNECTしないようにすることで、
エラーは発生しなくなりました。

SQL*Net、あるいはPBのOracleネイティブインタフェース側に、
「同時に複数のCONNECTはできない」などという制約があるのでしょうか?

ちなみにこの現象は、どのような場合でも発生するわけではなく、
CPU性能に大きく依存するようです。
私が試した限り、極端に速い、あるいは遅いCPUで頻発し、
200?400MHzクラスのCPUでは比較的安定します。


付加情報:

PowerBuilder Version (記載なし)

Client SoftWare

OS Windows NT 4.0
DBMS Oracle SQL*Net 8
Browser InternetExplorer4.X

Server SoftWare

OS (記載なし)
DBMS Oracle 8.0
WebServer (記載なし)

PowerSpaceの運営は、パワーフューチャー株式会社が行っております。
Copyright © 2013 Power Future Co., Ltd.