web-dev-qa-db-ja.com

タイムアウトの期限が切れました:接続プール

これが私たちが得ているエラーです。アプリサーバーとデータベースサーバーを32ビットからx64に移動しました。 Framework 2.0 Service Pack2がサーバーにインストールされています。

タイムアウトが切れました。プールから接続を取得する前にタイムアウト期間が経過しました。これは、プールされたすべての接続が使用されていて、最大プールサイズに達したために発生した可能性があります。

1
user21004

このエラーは、ADO.Net接続を閉じていないことを意味している可能性があります。コードを調べて、すべてのSqlConnectionオブジェクトがASP.Netコードで明示的に適切に破棄されていることを確認します。これは、VBまたはC#コードでブロックを使用して行うことができます。using構造は、接続がスコープ外になると、接続を自動的に閉じて破棄します...

// C# example
using (var conn = new SqlConnection(myConnectString))
{
    conn.Open();

    // your data access code here
}

...または.。

' VB example
Using conn As var = New SqlConnection(myConnectString)

    conn.Open()

    ' your data access code here

End Using
1
Scott Ivey

接続文字列に接続タイムアウト=を指定していますか?そうでない場合は、これを追加して300秒を指定し、さらに時間が必要かどうかを確認することをお勧めします。デフォルトは15秒だと思います。

http://msdn.Microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.connectionstring.aspx

0
Greg Askew

実稼働環境にかなり大規模なWebサービス統合を開始すると、私のグループにも同様の問題が発生しました。接続が閉じられていないインスタンスは見つからなかったため、接続が実際に必要であると結論することを余儀なくされました。私はまだ接続プールの最大サイズを上げることは穀物に反対していると言わなければなりません...グーグルを節約するために、これを変更する正確な方法は次のとおりです。

<connectionStrings>
  <add name="ConnString" 
       connectionString="Data Source=IP; Initial Catalog=DBName;User ID=User;
       Password=Pass; Max Pool Size=200;" 
       providerName="System.Data.SqlClient" />
</connectionStrings>

次の点に注意してください: "最大プールサイズ= 200;"

0
Gibron