Configurazione di PostgreSQL per abbinare la configurazione del server
-
01-11-2019 - |
Domanda
Attualmente stiamo eseguendo l'applicazione Web e il server di database su macchina dedicata Singe. Questa è configurazione hardware - http://www.hetzner.de/en/hosting/produkte_rootserver/ex10. Circa 50 GB di RAM sono gratuiti. PostGressQL prende solo 600 MB mentre i processi WebServer richiedono 7 GB. Il carico medio della CPU è del 25%.
Il software è Ubuntu 12.04 e Postgres 9.1. La dimensione del database è di 15 GB.
Man mano che il carico aumentava il tempo di risposta all'applicazione è aumentato da 230 ms a 450 ms negli ultimi mesi. L'applicazione richiede una quota del 40% mentre DB richiede il 60% dei tempi di risposta.
Abbiamo archiviato molte cose, ma ci chiedevamo se potevamo ottenere qualcosa modificando la configurazione di Postgres. Dopo un po 'di ricerca abbiamo scoperto che la configurazione di PostgreSQL predefinita (https://gist.github.com/darkofabijan/9453c793ceec1ac6274d) è davvero conservativo e che dovremmo sicuramente modificare la nostra configurazione.
Dopo aver eseguito PGTUNE abbiamo ottenuto i seguenti valori raccomandati.
maintenance_work_mem = 1GB
checkpoint_completion_target = 0.7
effective_cache_size = 44GB
work_mem = 288MB
wal_buffers = 4MB
checkpoint_segments = 8
shared_buffers = 15GB
max_connections = 200
Una volta che abbiamo iniziato a eseguire il nostro server PostgreSQL con valori consigliati, abbiamo ottenuto in qualche modo picchi regolari quando il tempo di risposta dell'applicazione è salito a 2000 ms+ mentre l'aumento era nel tempo di risposta al database. Dopo averlo eseguito per un paio d'ore, siamo tornati alla configurazione originale di Ubuntu 12.04/Postgresql 9.1.
Ovviamente non abbiamo molta esperienza con la gestione di DBS. Entrambe le raccomandazioni concrete riguardanti i valori suggeriti di PGTune e i puntatori a buone risorse sarebbero molto apprezzate.
EDIT 1:
name | current_setting | source
----------------------------+----------------------------------+----------------------
application_name | psql | client
client_encoding | UTF8 | client
DateStyle | ISO, MDY | configuration file
default_text_search_config | pg_catalog.english | configuration file
external_pid_file | /var/run/postgresql/9.1-main.pid | configuration file
lc_messages | en_US.UTF-8 | configuration file
lc_monetary | en_US.UTF-8 | configuration file
lc_numeric | en_US.UTF-8 | configuration file
lc_time | en_US.UTF-8 | configuration file
log_line_prefix | %t | configuration file
log_timezone | localtime | environment variable
max_connections | 100 | configuration file
max_stack_depth | 2MB | environment variable
port | 5432 | configuration file
shared_buffers | 24MB | configuration file
ssl | on | configuration file
TimeZone | localtime | environment variable
unix_socket_directory | /var/run/postgresql | configuration file
Nessuna soluzione corretta