Samo zwiększenie max_connections
to zły pomysł. Musisz zwiększyć shared_buffers
i kernel.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
max_connections = 100
shared_buffers = 24MB
do
max_connections = 300
shared_buffers = 80MB
shared_buffers
Parametr konfiguracyjny określa, ile pamięci jest dedykowany do PostgreSQL do użytku na buforowanie danych .
- Jeśli masz system z 1 GB lub więcej pamięci RAM, rozsądną wartością początkową dla shared_buffers jest 1/4 pamięci w systemie.
- jest mało prawdopodobne, że więcej niż 40% pamięci RAM będzie działać lepiej niż mniejsza ilość (np. 25%)
- Pamiętaj, że jeśli twój system lub kompilacja PostgreSQL jest 32-bitowa, ustawienie shared_buffers powyżej 2 ~ 2,5 GB może nie być praktyczne.
- Zwróć uwagę, że w systemie Windows duże wartości dla shared_buffers nie są tak skuteczne i możesz uzyskać lepsze wyniki, utrzymując je na stosunkowo niskim poziomie i częściej używając pamięci podręcznej systemu operacyjnego. W systemie Windows przydatny zakres to 64 MB do 512 MB .
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 maksymalne 96Mb
)
kernel.shmmax=100663296
Bibliografia
Połączenia Postgres Max i udostępnione bufory
Dostrajanie serwera PostgreSQL