在VB.Net Windows服務我目前正在集中工作單位:淨多線程:SQL連接池
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
運行時我看到約50個連接到SQL Server坐在IDLE
或ESTABLISHED
服務器上的netstat -a -o
,這似乎是過分了我特別是因爲我們有更大的Web應用程序t通過5-10個連接。
連接字符串對應用程序是全局的(不會更改),也有Pooling=true
定義。
現在每個這些線程都有自己的ConnectionPool
,或者是否有一個ConnectionPool
用於整個.EXE進程?
服務中有多少個工作項正在排隊? – Kev 2008-09-25 01:33:16