ADO.NET接続プールに関連する運用環境で例外が増えている原因を突き止めようとしていますが、ログには多くの例外がありますADO.NET接続プールで使用できる接続がありません
タイムアウトが切れています。プールから 接続を取得する前に、タイムアウト期間 が経過しました。プールされたすべての 接続が使用され、最大プール サイズに達したため、 が発生している可能性があります。
私が試した最初のことは、すべての接続が閉じられ、廃棄されていることを確認することでした。私は次の接続文字列使用してい
try
{
oConnection.Open();
//do something
}
catch()
{
}
finally
{
if (oConnection.State != ConnectionState.Closed)
{
oConnection.Close();
oConnection.Dispose();
}
}
:我々は、すべてのデータベース接続を変更することを行うためのSQLServerのための
Performance Managerでserver=databaseserver;Database=databasename;User Id=username;Password=password;Max Pool Size=600;Min Pool Size=50;Connection Timeout=180;Pooling=true
、.NETデータ・プロバイダを、私がいることがわかります」 NumberOfPooledConnections "と" NumberOfActivePooledConnections "は接続文字列の最大プールサイズよりも常に小さく、常に60〜90の接続です。
どのようにそれを可能にすることができますか?プールに接続がないという例外がありますが、プールが満杯ではないことがわかります。
私の環境:(すべての最近のpatchs付き)
- のWindows Server 2003のEnterprise SP2
- (Webガーデンに4つのワーカープロセスとし、アプリケーションプールは60分ごとにリサイクル)IIS 6.0を
- SQL Serverの2005
誰でもお手伝いしますか?
こんにちはMahesh Velaga、私はあなたの要点を持っていますが、センサが接続文字列の最大プールサイズより少ない接続を表示していることは間違いありませんか? – user520488
@ user520488 @bitxwiseの回答を見て、私はまた、それらのいくつか(接続)が休眠していると考えている(しかし、実際には処分されていない)と思います。 –