Hiện tại chúng tôi có một chút tình huống trên tay - có vẻ như ai đó, ở đâu đó quên đóng kết nối trong mã. Kết quả là nhóm kết nối tương đối nhanh chóng cạn kiệt. Là một bản vá tạm thời, chúng tôi đã thêm Max Pool Size = 500;
vào chuỗi kết nối của chúng tôi trên dịch vụ web và tái chế nhóm khi tất cả các kết nối được chi tiêu, cho đến khi chúng tôi tìm ra điều này.Tất cả các kết nối trong hồ bơi đang được sử dụng
Cho đến nay chúng tôi đã làm điều này:
SELECT SPId
FROM MASTER..SysProcesses
WHERE DBId = DB_ID('MyDb') and last_batch < DATEADD(MINUTE, -15, GETDATE())
để có được của SPID không được sử dụng trong 15 phút. Hiện chúng tôi đang cố gắng để có được những truy vấn đã được thực hiện cuối cùng sử dụng mà SPID với:
DBCC INPUTBUFFER(61)
nhưng các truy vấn hiển thị là khác nhau, có nghĩa là một trong hai điều gì đó về mức độ cơ bản về thao tác kết nối bị hỏng, hoặc khấu trừ của chúng tôi là sai lầm. ..
Có lỗi trong suy nghĩ của chúng tôi ở đây không? Liệu các DBCC/sysprocesses cho kết quả chúng ta đang mong đợi hay có một số tác dụng phụ bắt được? (Ví dụ, các kết nối trong ảnh hưởng hồ bơi?)
(xin vui lòng, dính với những gì chúng ta có thể tìm hiểu cách sử dụng SQL từ những kẻ đó đã mã rất nhiều và không phải tất cả có mặt ngay bây giờ)
'những người đã làm mã rất nhiều và không phải tất cả hiện tại ngay bây giờ' .. Tôi không nghĩ rằng họ đã có tất cả khi họ quên đóng kết nối SQL của họ. ;) –
bạn có mã nguồn phải không? Nó không phải là khó khăn để tìm kiếm tất cả các kết nối mở và đóng chúng, miễn là họ không cố tình đi qua các kết nối xung quanh ... –
@will @mitch - bạn * không * muốn xem mã, tin tôi đi :) nhưng, cuối cùng, đó là lựa chọn duy nhất ở cuối ... và chúng tôi đã khắc phục nó bằng cách đặt thử cuối cùng {close} ở mọi nơi ... – veljkoz