Terlalu Ramai Pelanggan: Menyelesaikan Masalah Ralat Sambungan Postgresql
Apabila cuba menyambung ke pangkalan data PostgreSQL, anda mungkin menghadapi ralat:
org.postgresql.util.PSQLException: FATAL: sorry, too many clients already
Ralat Penjelasan:
Ralat ini berlaku apabila bilangan maksimum sambungan serentak ke pangkalan data telah melebihi. PostgreSQL mempunyai had lalai 100 sambungan, yang boleh dilaraskan dalam fail postgresql.conf.
Punca Ralat:
Punca ralat yang paling mungkin berlaku ialah bahawa kod anda telah membuka dan tidak menutup sambungan pangkalan data dengan betul. Walaupun selepas kelas anda dimusnahkan dan sampah dikumpul, ia mungkin tidak melepaskan sambungan ke pangkalan data.
Penyelesaian:
Untuk menyelesaikan ralat ini, anda perlu memastikan bahawa semua sambungan ditutup selepas digunakan. Ini boleh dilakukan dengan menambahkan kod berikut pada mana-mana kelas yang membuat sambungan:
protected void finalize() throws Throwable { try { your_connection.close(); } catch (SQLException e) { e.printStackTrace(); } super.finalize(); }
Kod ini akan menutup sambungan apabila kelas anda dikumpul sampah.
Penyelesaian Masalah Tambahan :
Jalankan arahan SQL berikut untuk menyemak sambungan maksimum dibenarkan:
show max_connections;
Semak bilangan sambungan semasa:
SELECT COUNT(*) from pg_stat_activity;
Menetapkan Sambungan Maks:
Jika perlu, anda boleh meningkatkan bilangan maksimum sambungan yang dibenarkan dalam postgresql. fail conf. Cari baris max_connections=100, dan tukar nilai kepada nombor yang lebih tinggi.
Sambungan Maks Maksimum:
Bilangan maksimum sambungan secara teori ialah 8,388,607. Walau bagaimanapun, adalah tidak disyorkan untuk menetapkan sambungan maks terlalu tinggi, kerana ini boleh menyebabkan masalah keletihan sumber dan prestasi. Nilai wajar untuk sambungan_maks biasanya sekitar 100.
Atas ialah kandungan terperinci Mengapa Saya Mendapat Ralat 'Terlalu Ramai Pelanggan' Semasa Menyambung ke PostgreSQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!