Configuration de PostgreSQL pour correspondre à la configuration du serveur
-
01-11-2019 - |
Question
Nous exécutons actuellement des applications Web et du serveur de base de données sur SINGE Dédié. C'est la configuration matérielle - http://www.hetzner.de/en/hosting/produkte_rootserver/ex10. Environ 50 Go de RAM est gratuit. Postgressql ne prend que 600 Mo tandis que les processus de serveur Web prennent 7 Go. La charge moyenne du processeur est de 25%.
Le logiciel est Ubuntu 12.04 et Postgres 9.1. La taille de la base de données est de 15 Go.
À mesure que la charge augmentait, notre temps de réponse de l'application est passé de 230 ms à 450 ms au cours des derniers mois. L'application prend 40% de part tandis que DB prend 60% du temps de réponse.
Nous avons mis en cache beaucoup de choses, mais nous nous demandons si nous pouvions obtenir quelque chose en modifiant la configuration de Postgres. Après un peu de recherche, nous avons constaté que la configuration postgresql par défaut (https://gist.github.com/darkofabijan/9453c793ceec1ac6274d) est vraiment conservateur et que nous devrions certainement modifier notre configuration.
Après avoir exécuté PGTUNE, nous avons obtenu les valeurs recommandées suivantes.
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
Une fois que nous avons commencé à exécuter notre serveur PostgreSQL avec des valeurs recommandées, nous avons obtenu des pointes régulières lorsque le temps de réponse de l'application est passé à 2000 ms + tandis que l'augmentation était dans le temps de réponse de la base de données. Après l'avoir exécuté pendant quelques heures, nous sommes revenus à la configuration d'origine Ubuntu 12.04 / PostgreSQL 9.1.
De toute évidence, nous n'avons pas beaucoup d'expérience dans l'exécution de DBS. Les deux recommandations concrètes concernant PGTune ont suggéré que les valeurs et les pointeurs vers de bonnes ressources seraient très appréciés.
Modifier 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
Pas de solution correcte