Pooled connections were in use and max pool size was reached

Aku mendapatkan error ini beberapa waktu yang lalu. Sementara aplikasi sudah di publis beberapa minggu yang lalu. Error ini muncul ketika aplikasi melakukan request ke database, kemudian tidak ada respon sama sekali, dan akhirnya muncul error

“Timeout expired. The timeout period elapsed prior to obtaining a connection from the pool. This may have occurred because all pooled connections were in use and max pool size was reached.”

Umumnya masalah ini muncul karena kondisi dimana aplikasi tidak menutup koneksi ke database secara benar. Koneksi akan terus terbuka sampai garbage collector (GC) membersihkannya. Dan kita tidak bisa mengandalkan GC untuk menutup dan membersihkan koneksi karena entah kapan GC melakukan tugasnya. Cara yang terbaik adalah, segera menutup koneksi secara manual begitu urusan kita dengan database selesai.

Menutup Koneksi
Jika ingin menutup koneksi ke database, pastikan koneksi benar-benar tertutup

Dim conn as New SqlConnection(StringKoneksi)
conn.Open()
LakukanProsesDisini()
conn.Close()
conn.Dispose()

Contoh diatas, koneksi ditutup secara jelas di conn.Close(), tapi koneksi tidak akan benar-benar tertutup jika pada method LakukanProsesDisini() terjadi error (exception).

Dim conn as New SqlConnection(StringKoneksi)
Try
     conn.Open()
     LakukanProsesDisini()
Catch ex As Exception
 Finally
     conn.Close()
     conn.Dispose()
 End Try

Di contoh kedua, koneksi akan ditutup meskipun terjadi error, karena blok finally akan tetap dijalankan apapun yang terjadi di blok Try.

Dim conn as New SqlConnection(StringKoneksi)
Using conn
     conn.Open()
     LakukanProsesDisini()
End Using

Contoh ketiga, End Using akan memastikan atau secara otomatis menjalankan methode Close() dan Dispose().

Jadi jika menemukan error semacam ini, periksa kembali semua koneksi dan koneksi pool nya.

About Yuniar

Penulis sekarang lebih banyak bekerja menggunakan teknologi Microsoft .NET secara umum dan TIDAK lagi menggunakan aplikasi MapXtreme.net dari MapInfo. Karena itu mohon maaf, jika pertanyaan-pertanyaan mengenai MapXtreme sudah tidak bisa saya jawab lagi.

Posted on 24 Maret 2011, in ADO.net and tagged , . Bookmark the permalink. 2 Komentar.

  1. saya lagi buat project nech..pengennya saya buat form input data dan datagridnya tuch terpisah…
    misal saya input data di form1,stelah disave nanti data yang diinputkan langsung muncul di form2..
    kira2 caranya gmn ya..tolong penjelasany..

    • Ini web ato desktop ya?
      Kalo di web, ada banyak cara. Salah satunya adalah “Crosspage postback”, silahkan cari di google mengenai penjelasan detilnya.
      Kalo di app dekstop, saya kira lebih mudah, karena anda bisa mengakses control2 yang ada di page sebelumnya secara langsung.

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: