В службе VB.Net Windows, я в настоящее время объединяют единицы работы с:.Net Многопоточность: SQL ConnectionPool
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
на сервере я вижу около 50 подключений к SQL серверу, сидя на IDLE
или ESTABLISHED
, это кажется чрезмерным для меня тем более, что мы имеем гораздо более крупные веб-приложения tha t получить с помощью 5-10 соединений.
Строка соединения глобальна для приложения (не изменяется) и имеет также Pooling=true
.
Теперь каждый из этих потоков имеет свой собственный ConnectionPool
, или есть один ConnectionPool
для всего процесса .EXE?
Сколько рабочих элементов находится в очереди на обслуживание? – Kev 2008-09-25 01:33:16