Używam Postgres DB dla mojego produktu. Podczas wstawiania wsadowego za pomocą slicka 3 otrzymuję komunikat o błędzie:
org.postgresql.util.PSQLException: KRYTYCZNY: przepraszam, już za dużo klientów.
Moja operacja wsadowa będzie obejmowała ponad tysiące rekordów. Maksymalna liczba połączeń dla moich postgresów to 100.
Jak zwiększyć maksymalną liczbę połączeń?
postgresql
Strumień
źródło
źródło
Odpowiedzi:
Samo zwiększenie
max_connections
to zły pomysł. Musisz zwiększyćshared_buffers
ikernel.shmmax
również.Rozważania
max_connections
określa maksymalną liczbę jednoczesnych połączeń z serwerem bazy danych. Wartość domyślna to zazwyczaj 100 połączeń.Przed zwiększeniem liczby połączeń może być konieczne skalowanie wdrożenia. Ale wcześniej powinieneś rozważyć, czy naprawdę potrzebujesz zwiększonego limitu połączeń.
Każde połączenie PostgreSQL zużywa pamięć RAM do zarządzania połączeniem lub korzystającym z niego klientem. Im więcej masz połączeń, tym więcej pamięci RAM będziesz używać, którą można zamiast tego użyć do uruchomienia bazy danych.
Dobrze napisana aplikacja zazwyczaj nie wymaga dużej liczby połączeń. Jeśli masz aplikację, która wymaga dużej liczby połączeń, rozważ użycie narzędzia takiego jak pg_bouncer, które może gromadzić połączenia dla Ciebie. Ponieważ każde połączenie zużywa pamięć RAM, powinieneś starać się zminimalizować ich użycie.
Jak zwiększyć maksymalną liczbę połączeń
1. Zwiększ
max_connection
ishared_buffers
w
/var/lib/pgsql/{version_number}/data/postgresql.conf
zmiana
do
shared_buffers
Parametr konfiguracyjny określa, ile pamięci jest dedykowany do PostgreSQL do użytku na buforowanie danych .2. Zmień plik kernel.shmmax
Musiałbyś zwiększyć maksymalny rozmiar segmentu jądra, aby był nieco większy niż
shared_buffers
.W pliku
/etc/sysctl.conf
ustaw parametr jak pokazano poniżej.postgresql
Zacznie obowiązywać po ponownym uruchomieniu (poniższy wiersz powoduje, że jądro jest maksymalne96Mb
)Bibliografia
Połączenia Postgres Max i udostępnione bufory
Dostrajanie serwera PostgreSQL
źródło
cat /proc/sys/kernel/shmmax
) przed ich zmianą. W nowoczesnych systemach jest już ustawiony absurdalnie wysoko i nie należy go zmieniać. Mój jest ustawiony18446744073692774399
domyślnie na Ubuntu 18.04.Dodając do wspaniałej odpowiedzi Winnie,
Jeśli ktoś nie może znaleźć lokalizacji pliku postgresql.conf w twojej konfiguracji, zawsze możesz zapytać samego postgres.
Dla mnie sama zmiana max_connections była sztuczką.
źródło
/etc/postgresql/11/main/postgresql.conf
zmień zmienną max_connections w pliku postgresql.conf znajdującym się w / var / lib / pgsql / data lub / usr / local / pgsql / data /
źródło