Mengapa Saya Mendapat \'MySQLNonTransientConnectionException: Tiada operasi dibenarkan selepas sambungan ditutup\' dan Bagaimana Saya Boleh Membetulkannya?

Susan Sarandon
Lepaskan: 2024-10-30 04:59:02
asal
1019 orang telah melayarinya

Why Am I Getting

Tamat Masa Pangkalan Data dan Lebihan Pengumpulan Sambungan

Isu Hibernate ini, "com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Tiada operasi dibenarkan selepas sambungan ditutup," timbul apabila sambungan berterusan ditutup secara tersirat kerana ketidakaktifan.

Punca:

Sambungan diwujudkan tetapi kekal tidak aktif untuk tempoh lanjutan, melebihi "masa tunggu" pelayan atau tetapan tamat masa klien seperti "masa tamat sambungan".

Penyelesaian:

1. Laraskan Masa Tamat Pelayan dan Pelanggan:

  • Di bahagian pelayan, tingkatkan parameter "wait_timeout" dalam konfigurasi MySQL.
  • Di bahagian klien, nyatakan "connectiontimeout" dan sifat "readTimeout" dalam konfigurasi sambungan anda.

2. Konfigurasi Pengumpulan Sambungan:

  • Gunakan kumpulan sambungan pihak ketiga seperti C3P0 dan bukannya kolam terbina dalam Hibernate.
  • Konfigurasikan parameter kumpulan yang sesuai seperti "maxPoolSize," " minPoolSize," "idleTimeout," dan "maxIdleTime."

Contoh hibernate.cfg.xml Konfigurasi Menggunakan C3P0:

<code class="xml"><property name="connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
<property name="c3p0.max_size">20</property>
<property name="c3p0.min_size">5</property>
<property name="c3p0.timeout">1800</property>
<property name="c3p0.idleTestPeriod">3600</property>
<property name="c3p0.maxIdleTime">3600</property></code>
Salin selepas log masuk

Tambahan Petua:

  • Semak mana-mana tembok api atau pelayan proksi yang mungkin menyekat atau menamatkan masa sambungan.
  • Pertimbangkan untuk menggunakan pemacu JDBC yang menyokong JDBC Connection Pooling, seperti MySQL Connector/ J.
  • Pantau corak penggunaan sambungan dan laraskan saiz kolam dengan sewajarnya.

Atas ialah kandungan terperinci Mengapa Saya Mendapat \'MySQLNonTransientConnectionException: Tiada operasi dibenarkan selepas sambungan ditutup\' dan Bagaimana Saya Boleh Membetulkannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan