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

Konfigurasikan kumpulan koneksi GlassFish JDBC untuk menangani failover Amazon RDS Multi-AZ

Seperti yang saya komentari sebelumnya, itu karena soket yang terbuka dan terhubung ke database tidak menyadari bahwa koneksi telah terputus, jadi mereka tetap terhubung sampai batas waktu soket OS dipicu, yang saya baca mungkin biasanya sekitar 30 menit .

Untuk mengatasi masalah ini, Anda perlu mengganti Timeout soket di String Koneksi JDBC Anda atau di Konfigurasi/Properti Koneksi JDNI untuk menentukan socketTimeout parameter ke waktu yang lebih kecil.

Ingatlah bahwa koneksi apa pun yang lebih panjang dari nilai yang ditentukan akan dimatikan, meskipun sedang digunakan (saya belum dapat mengonfirmasi hal ini, itulah yang saya baca).

Dua parameter lainnya yang saya sebutkan dalam komentar saya adalah connectTimeout dan koneksi ulang otomatis .

Inilah String Koneksi JDBC saya:

jdbc:(...)&connectTimeout=15000&socketTimeout=60000&autoReconnect=true 

Saya juga menonaktifkan cache DNS Java dengan melakukan

 java.security.Security.setProperty("networkaddress.cache.ttl" , "0"); 
 java.security.Security.setProperty("networkaddress.cache.negative.ttl" , "0"); 

Saya melakukan ini karena Java tidak menghormati TTL, dan ketika failover terjadi, DNSnya sama tetapi IP-nya berubah.

Karena Anda menggunakan Server Aplikasi, parameter untuk menonaktifkan cache DNS harus diteruskan ke JVM saat memulai glassfish dengan -Dnet dan bukan aplikasi itu sendiri.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Berapa banyak memori yang akan ditempati oleh nilai nol dalam DB?

  2. Cara Menghapus Prosedur Tersimpan di MySQL

  3. Mencari ketersediaan dengan MySQL (dan PHP)?

  4. MySQL:ALTER IGNORE TABLE memberikan pelanggaran batasan Integritas

  5. MySQL GROUP BY DateTime +/- 3 detik