Pertanyaan Menggunakan Monitor Kinerja untuk memantau koneksi gabungan


Saya sedang menyelidiki kesalahan ini dari aplikasi MVC3 yang gagal di bawah beban:

"Periode timeout berlalu sebelum mendapatkan koneksi dari pool. Hal ini mungkin terjadi karena semua koneksi yang di-pool sedang digunakan dan ukuran maksimal pool telah tercapai."

Aplikasi ini menggunakan pola Repositori dan Kerangka Entitas, dan dugaan saya adalah bahwa itu tidak menutup koneksi dengan benar. Saya ingin dapat memantau jumlah koneksi yang dikumpulkan pada SQL Server. Mencari di sekitar membuat saya percaya bahwa saya dapat menggunakan penghitung ini di Perfmon:

  • .NET Data CLR
  • .NET Data Provider untuk SQLServer

Namun keduanya menunjukkan dan menjadi cacat / abu-abu.

Saya menjalankan Perfmon langsung di server, dan kedua ISS dan SQL Server berjalan di server. Ada gagasan mengapa penghitung ini tidak tersedia?

Saya juga mencoba menggunakan SQL Profiler untuk memonitor koneksi gabungan, tetapi kolom EventSubClass tidak tersedia untuk AuditLogin.


5
2017-08-16 10:00


asal


Jawaban:


Anda dapat menjalankan ini dari jendela permintaan SQL untuk mendapatkan hitungan dan rincian koneksi saat ini dan sesi yang berjalan di server SQL Anda.

select * FROM sys.dm_exec_sessions AS es  
INNER JOIN sys.dm_exec_connections AS ec  
ON es.session_id = ec.session_id

Saya mengalami masalah dengan koneksi gabungan. Mereka sulit dikendalikan. Secara eksplisit menutup mereka sepertinya tidak pernah berhasil karena mereka di bawah kendali .NET. Alasan terbesar kami kehabisan koneksi adalah transaksi tidak terikat. Jika transaksi dibiarkan tanpa komitmen atau dibatalkan untuk beberapa alasan, koneksi, alih-alih digunakan kembali, terjebak dalam limbo, memaksa .NET untuk membuka koneksi lain untuk melanjutkan pemrosesan.


6
2017-08-16 10:50



Dari sisi SQL, satu-satunya cara yang layak untuk meninjau ini adalah dengan menyiapkan jejak acara masuk. Kolom "Event Subclass" akan memberi tahu Anda jika peristiwa itu terjadi menggunakan koneksi gabungan atau tidak. Dengan itu, Anda dapat menghubungkan host, login, dan nama aplikasi dan terus menggali.

Kelas Acara Audit Masuk

Di sisi aplikasi Anda dapat menggunakan penghitung kinerja ". NET DATA PROVIDER FOR SQL SERVER" di perfmon.

Penghitung Kinerja di ADO.NET


1
2017-10-10 16:12