VB.Net Windows サービスでは、現在、次の作業単位をプールしています。
ThreadPool.QueueUserWorkItem(operation, nextQueueID)
各作業単位 (または理解を容易にするために使用するスレッド) で、次のようないくつかの MSSQL 操作が行われます。
Using sqlcmd As New SqlCommand("", New SqlConnection(ConnString))
With sqlcmd
.CommandType = CommandType.Text
.CommandText = "UPDATE [some table]"
.Parameters.Add("@ID", SqlDbType.Int).Value = msgID
.Connection.Open()
.ExecuteNonQuery()
.Connection.Close() 'Found connections not closed quick enough'
End With
End Using
サーバー上でを実行すると、またはにあるnetstat -a -o
SQL サーバーへの接続が約 50 見られます。これは、特に 5 ~ 10 の接続で済むはるかに大規模な Web アプリケーションがあるため、過剰に思えます。 IDLE
ESTABLISHED
接続文字列はアプリケーションに対してグローバルであり (変更されません)、Pooling=true
同様に定義されています。
これらのスレッドのそれぞれに独自の.EXE プロセスConnectionPool
がありますか?ConnectionPool