Tuning konfiguracji PG
Generalnie nie ma prostego przepisu, ale poniżej zbiór wytycznych, których powinniśmy przestrzegać.
Polecamy artykuł: https://severalnines.com/blog/architecture-and-tuning-memory-postgresql-databases/
Ustawienia edytujemy w pliku: /etc/postgresql/14/main/postgresql.conf
i po zmianach wymaga to restartu Postgresa (systemctl restart postgresql
), dlatego można to zmieniać tylko po zatrzymaniu wszystkich usług na serwerze.
Parametr max_connections
Im większa instalacja tym więcej wypada przydzielić. Minimalna wartość dla serwerów hostingowych to 1000.
max_connections = 1000 # (change requires restart)
Parametr shared_buffers
Ogólna rekomendacja zależy od dostępnej pamięci serwera:
poniżej 2GB - ustaw na 20% dostępnej pamięci
poniżej 32GB - ustaw na 25% dostępnej pamięci
powyżej 32GB - ustaw na 8GB
Parametr max_wal_size
natomiast ustawiamy na tę samą wartość.
shared_buffers = 8GB # min 128kB
max_wal_size = 8GB
Parametr work_mem
Ogólna rekomendacja:
zacznij od niskiej wartości: 32-64MB
sprawdź w logu linie zawierające ‘temporary file’
ustaw na 2-3 razy większą wartość od największego pliku tymczasowego
work_mem = 64MB # min 64kB
Parametr maintenance_work_mem
Ogólna rekomendacja:
ustaw na 10% dostępnej pamięci, ale do 1GB
można ustawić na więcej, jeśli VACUUM sprawia problemy
Parametr effective_cache_size
Ogólna rekomendacja:
ustaw na wartość dostępnego cache systemu plików
jak nie wiesz, to ustaw na 50% dostępnej pamięci
Parametr max_pred_locks_per_transaction
Może być konieczność podniesienia tej wartości. Dla Strixa sugerujemy podnosić na 256