- PR -

ADO.NETの接続プールについて

1
投稿者投稿内容
ttcoupe
大ベテラン
会議室デビュー日: 2003/01/17
投稿数: 116
お住まい・勤務地: 大阪市
投稿日時: 2004-04-03 03:33
いつも拝見しています。

今回ADO.NET+ASP.NETのアプリを構築しています。
DBサーバ(Oracle)がとても非力でセッションもそんなにつなげれないので、
接続プールを使用しようと思ってテストをしています。
ですが、"Max Pool Size"を仮に10にしても過負荷を与えるとセッション
数がそれ以上になってしまう現象がおきています。
接続プール内コネクションプール=Oracleへ接続するためのセッション数
ではないのでしょうか?違うのであればセッション数を任意の数までに抑
制する方法はあるのでしょうか。ご教授をください。

☆あと、今回の環境が.NetFrameWork1.0SP2+Oracle8.0.5という環境なので
すが、.NET Framework Data Provider for Oracleを使用しようと思って
MSDNに行くと1.0でもダウンロードして使用はできるけど、サポートは
1.1からですという赤字の文言がありました。これって問題ありなのでしょうか?
一郎
ぬし
会議室デビュー日: 2002/10/11
投稿数: 1081
投稿日時: 2004-04-03 11:40
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpguide/html/cpconconnectionpoolingfornetdataproviderfororacle.asp
引用:
最大プール サイズに達すると、使用可能な接続を取得できなくなり、要求はキューに置かれます。接続プーラーは、接続がプールに解放されたときに接続の再割り当てを行ってそれらの要求に応えます。

だそうですので、Max Pool Size以上にはならなそうに思えますね。
でも、
引用:
接続が開かれると、厳密一致のアルゴリズムに基づいて接続プールが作成され、接続内の接続文字列に関連付けられます。各接続プールが別の接続文字列に関連付けられます。新しい接続が開かれたとき、接続文字列が既存のプールと厳密に一致しない場合は、新しいプールが作成されます。

こんなことも書いてありますね。
接続文字列が異なる接続を使ったりしてませんか?

[ メッセージ編集済み 編集者: 一郎 編集日時 2004-04-03 11:41 ]
ttcoupe
大ベテラン
会議室デビュー日: 2003/01/17
投稿数: 116
お住まい・勤務地: 大阪市
投稿日時: 2004-04-05 16:31
接続文字列は

Dim strConnect As String
strConnect = ""
strConnect = strConnect & "Provider=ORAOLEDB.ORACLE.1;"
strConnect = strConnect & "Data Source=" & strConnSID & ";"
strConnect = strConnect & "User id=" & strConnUSER & ";"
strConnect = strConnect & "Password=" & strConnPASS & ";"
strConnect = strConnect & "Persist Security Info=False;"
strConnect = strConnect & "Pooling=true;"
strConnect = strConnect & "Max Pool Size=" & lPoolSizeMax & ";"
strConnect = strConnect & "Min Pool Size=" & lPoolSizeMin & ";"
strConnect = strConnect & "OLEDB.NET=True"

でこれをアプリケーション変数にしています。(Global.asaxで記述)
同一の接続文字列と思うのですが・・・。
小野@どっとねっとふぁん
ぬし
会議室デビュー日: 2001/10/30
投稿数: 402
投稿日時: 2004-04-05 20:09
変数になっている部分(strConnUSER)が常に同じ値なら
同一でしょうけど。。。
これだけの情報では同じ接続文字列が使われていない、と
判断したくなりますね。
一郎
ぬし
会議室デビュー日: 2002/10/11
投稿数: 1081
投稿日時: 2004-04-05 20:26
例えば、そのWebアプリケーションにアクセスする人によってDB接続のユーザーIDが違うとか。

全部const変数か何かで持っている定数ですかね。
1

スキルアップ/キャリアアップ(JOB@IT)