Saya menggunakan Postgres DB untuk produk saya. Saat melakukan penyisipan batch menggunakan slick 3, saya mendapatkan pesan kesalahan:
org.postgresql.util.PSQLException: FATAL: maaf, sudah terlalu banyak klien.
Operasi penyisipan batch saya akan lebih dari ribuan catatan. Koneksi maksimum untuk postgres saya adalah 100.
Bagaimana cara meningkatkan koneksi maks?
postgresql
Jet
sumber
sumber
Jawaban:
Meningkatkan saja
max_connections
adalah ide yang buruk. Anda perlu meningkatkanshared_buffers
dankernel.shmmax
juga.Pertimbangan
max_connections
menentukan jumlah maksimum koneksi bersamaan ke server database. Standarnya biasanya 100 koneksi.Sebelum meningkatkan jumlah koneksi, Anda mungkin perlu meningkatkan penerapan Anda. Tetapi sebelum itu, Anda harus mempertimbangkan apakah Anda benar-benar membutuhkan peningkatan batas koneksi.
Setiap koneksi PostgreSQL menggunakan RAM untuk mengelola koneksi atau klien menggunakannya. Semakin banyak koneksi yang Anda miliki, semakin banyak RAM yang akan Anda gunakan yang dapat digunakan untuk menjalankan database.
Aplikasi yang ditulis dengan baik biasanya tidak membutuhkan banyak koneksi. Jika Anda memiliki aplikasi yang membutuhkan banyak koneksi, pertimbangkan untuk menggunakan alat seperti pg_bouncer yang dapat mengumpulkan koneksi untuk Anda. Karena setiap koneksi menggunakan RAM, Anda harus berusaha meminimalkan penggunaannya.
Cara meningkatkan koneksi maks
1. Meningkatkan
max_connection
danshared_buffers
di
/var/lib/pgsql/{version_number}/data/postgresql.conf
perubahan
untuk
The
shared_buffers
parameter konfigurasi menentukan berapa banyak memori yang didedikasikan untuk PostgreSQL untuk digunakan untuk caching data yang .2. Ubah kernel.shmmax
Anda perlu meningkatkan ukuran segmen kernel maks menjadi sedikit lebih besar dari
shared_buffers
.Dalam file,
/etc/sysctl.conf
atur parameter seperti yang ditunjukkan di bawah ini. Ini akan berlaku saatpostgresql
reboot (Baris berikut membuat kernel maks96Mb
)Referensi
Koneksi Postgres Max Dan Buffer Bersama
Menyetel Server PostgreSQL Anda
sumber
cat /proc/sys/kernel/shmmax
) sebelum mengubahnya. Pada sistem modern ini sudah disetel sangat tinggi dan tidak boleh diubah. Milik saya diatur18446744073692774399
secara default di Ubuntu 18.04.Menambah jawaban bagus Winnie,
Jika ada yang tidak dapat menemukan lokasi file postgresql.conf di setup Anda, Anda selalu dapat menanyakan postgres itu sendiri.
Bagi saya, mengubah max_connections saja sudah membuat triknya.
sumber
/etc/postgresql/11/main/postgresql.conf
ubah variabel max_connections di file postgresql.conf yang terletak di / var / lib / pgsql / data atau / usr / local / pgsql / data /
sumber