Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Tidak dapat terhubung dengan database setelah beberapa kali penerapan di server

Di properti konfigurasi Anda, Anda telah menggunakan properti c3p0 maxIdleTime, tetapi properti c3p0 dikonfigurasi menggunakan c3p0. awalan atau hibernate.c3p0. . Perhatikan bahwa mengaktifkan salah satu c3p0 properties secara otomatis mengaktifkan penyedia koneksi yang sesuai dengan heuristik hibernasi. Di log tidak terlihat bahwa Anda menggunakan c3p0. Jika Anda tidak mengonfigurasi sumber data maka Hibernate akan menggunakan hibernate.connection.provider_class org.hibernate.connection.DriverManagerConnectionProvider . Penyedia koneksi ini memiliki kumpulan koneksi dasar bawaan yang dapat Anda atur hibernate.connection.pool_size , tetapi hanya digunakan untuk tujuan pengembangan. Jangan pernah menggunakannya di lingkungan produksi.

Anda mungkin memiliki diskusi tanpa akhir tentang topik Cara memperbaiki java.net.SocketException:Pipa rusak . Setelah beberapa waktu Anda akan menyadari bahwa Anda tetap terbuka koneksi di kolam, yang tiba-tiba ditutup di sisi lain karena alasan berikut:

  • Firewall atau router dapat menghentikan koneksi yang tidak aktif (protokol klien/server MySQL tidak berfungsi).
  • Server MySQL mungkin menutup koneksi idle yang melebihi wait_timeout atauinteractive_timeout ambang.

Untuk membantu memecahkan masalah ini, tips berikut dapat digunakan:

  • Digunakan versi terbaru (5.1.13+) driver JDBC.
  • Pastikan bahwa wait_timeout dan interactive_timeout ditetapkan cukup tinggi. Periksa apakah interactiveClient digunakan.
  • Pastikan bahwa tcpKeepalive diaktifkan.
  • Pastikan bahwa semua setelan waktu habis firewall atau router yang dapat dikonfigurasi memungkinkan waktu siaga koneksi maksimum yang diharapkan.
  • Pastikan koneksi valid saat digunakan dari kumpulan koneksi. Gunakan kueri yang dimulai dengan /* ping */ untuk mengeksekusi ping ringan alih-alih kueri penuh. Perhatikan, sintaks ping harus persis seperti yang ditentukan di sini.
  • Memvalidasi koneksi secara eksplisit sebelum menggunakannya jika koneksi tidak digunakan untuk waktu yang lama.
  • Minimalkan durasi objek koneksi dibiarkan menganggur saat logika aplikasi lain dijalankan.

Untuk mematuhi beberapa opsi ini, Anda sebaiknya menggunakan kumpulan koneksi yang dapat Anda gunakan dengan Hibernate. Hibernate memiliki dukungan untuk commons-dbcp, c3p0, dan proxool. Anda juga dapat mengonfigurasi sumber data JNDI di server web untuk digunakan dengan hibernasi, ia memiliki kumpulan koneksi. Lihat Bab 7 Penggabungan Koneksi dengan Konektor/J .

Jika Anda ingin mengonfigurasi Hibernate dengan c3p0 Anda harus membaca Cara mengonfigurasi kumpulan koneksi C3P0 . Untuk konfigurasi contoh dbcp Anda harus memeriksa posting ini MySQL, Hibernate, dan Pengecualian Pipa Rusak . Penyatuan koneksi apa pun yang akan Anda gunakan terserah Anda.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pustaka PHP Model Kumpulan Bersarang

  2. Mengonversi tanggal di MySQL dari bidang string

  3. Cara mengatur variabel lingkungan untuk Laravel 5 di AWS EC2 dengan MySQL

  4. MySQL Urutkan Berdasarkan Abjad tetapi Abaikan

  5. Apa perbedaan antara prosedur, fungsi, dan rutinitas tersimpan?