У нас сейчас небольшая ситуация - кажется, что кто-то где-то забыл закрыть соединение в коде. В результате пул соединений относительно быстро истощается. В качестве временного патча мы добавили Максимальный размер пула = 500;
в нашу строку подключения к веб-сервису и перезапустили пул, когда все подключения будут исчерпаны, пока не выясним это.
Пока что мы это сделали. :
SELECT SPId
FROM MASTER..SysProcesses
WHERE DBId = DB_ID('MyDb') and last_batch < DATEADD(MINUTE, -15, GETDATE())
для получения SPID, которые не используются в течение 15 минут. Теперь мы пытаемся получить последний выполненный запрос с использованием этого SPID с помощью:
DBCC INPUTBUFFER(61)
но отображаемые запросы различны, что означает, что либо что-то на базовом уровне, связанное с манипуляциями с соединением, было нарушено, либо наш вывод ошибочен ...
Есть ли здесь ошибка в нашем мышлении? Дает ли DBCC / sysprocesses ожидаемые результаты или есть побочный эффект? (например, влияют соединения в пуле?)
(пожалуйста, придерживайтесь того, что мы могли бы узнать с помощью SQL, так как ребят, которые сделали код, много, и не все присутствуют прямо сейчас)