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

Bagaimana cara menghindari koneksi DB yang macet dengan kumpulan koneksi JDBC TomEE?

Saya berhasil menggunakan resources.xml di WEB-INF saya folder yang mirip dengan yang ini di proyek produksi saya:

<?xml version="1.0" encoding="utf-8"?>
<resources>
<Resource id="mysql-jdbc-jta-resource-stg" type="javax.sql.DataSource">
    JtaManaged = true
    DataSourceCreator = tomcat

    validationQuery = SELECT 1
    initialSize = 2
    removeAbandoned = true
    removeAbandonedTimeout = 120

    driverClassName = com.mysql.jdbc.Driver
    url = jdbc:mysql://db-stg.bar.someRegion.rds.amazonaws.com/someDBname
    username = your-username
    password = your-pw
</Resource>
</resources>

Satu perbedaan penting adalah menggunakan DataSourceCreator = tomcat . Ini memastikan bahwa TomEE membuat kumpulan yang menangani validasi koneksi ("SELECT 1") dan menghapus koneksi yang terhenti/ketinggalan zaman, sehingga membebaskan sumber daya di latar belakang.

Sebaliknya, DataSourceCreator = dbpc (yang merupakan default saat tidak disetel:"Kolam default yang disediakan adalah DBCP... ") berperilaku seperti yang Anda jelaskan/alami (batas waktu,...). Periksa dokumentasi terkait untuk perbedaan lebih lanjut.

Perhatikan juga, bahwa = digunakan dalam konfigurasi kerja saya. Saya menemukan bahwa dalam rilis TomEE sebelumnya tampaknya berfungsi tanpa = . Namun, saya akan merekomendasikan untuk mengonfigurasi dengan = secara konsisten ketika server aplikasi target Anda adalah TomEE 1.7.2 atau lebih tinggi.

Detail lebih lanjut tentang ini juga dapat ditemukan di Konfigurasi Sumber Data halaman.

Semoga membantu.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mengapa komit tidak menyebabkan kebuntuan

  2. Metode yang lebih baik untuk menghapus banyak baris dalam database MySQL dengan PHP?

  3. Kriteria Pencarian berdasarkan TextField dan Menu Daftar

  4. Memformat hasil kueri MySQL seolah-olah dijalankan dari konsol

  5. Bagaimana saya bisa mengunci tabel InnoDB untuk mencegah pembaruan saat tabel itu sedang disalin?