Tunning de PostgreSql¶
postgresql.conf¶
Le tuning d’un serveur postgreSQL se fait grâce au fichier postgresql.conf généralement positionné dans /etc/postgresql/8.3/main/
Plusieurs paramètres sont faciles à modifier et peuvent apporter un gain de performance important:
- shared_buffers = peut être positionné à 25% de la RAM pour un serveur dédié. Attention de ne pas trop monter ce paramètre tout de même car il faut laisser de la RAM au noyau pour gérer son cache
- wal_buffers = il est raisonnable de la passer à 8MB
- work_mem = à ajuster en fonction du nombre de connexion à la base, valeur entre 10MB et 100MB
- maintenance_work_mem = mémoire allouée aux actions de maintenance. Dépend de la taille des bases et de la RAM dispo. Perso, je l’a met à 25% de la RAM
- checkpoint_segments = mettre au moins 10
- effective_cache_size = pour un serveur dédié compter 2/3 de la RAM
pg_hba.conf¶
Le fichier pg_hab.conf gère la méthode de connexion des clients ainsi que le système d’authentification.
La documentation officielle explique les nombreuses type d’authentification. Pour faire simple il faut ne retenir que les exemples suivant
# Permettre à n'importe quel utilisateur du système local de se connecter
# à la base de données sous n'importe quel nom d'utilisateur au travers
# des sockets de domaine Unix (par défaut pour les connexions locales).
#
# TYPE DATABASE USER CIDR-ADDRESS METHOD
local all all trust
# La même chose en utilisant les connexions TCP/IP locales loopback.
#
# TYPE DATABASE USER CIDR-ADDRESS METHOD
host all all 127.0.0.1/32 trust
# Pareil mais en utilisant une colonne netmask distincte.
#
# TYPE DATABASE USER IP-ADDRESS IP-mask METHOD
host all all 127.0.0.1 255.255.255.255 trust
# Permettre à n'importe quel utilisateur de n'importe quel hôte avec l'adresse IP
# 192.168.93.x de se connecter à la base de données "postgres" sous le nom
# d'utilisateur qu'ident signale à la connexion (généralement le
# nom utilisateur Unix).
#
# TYPE DATABASE USER CIDR-ADDRESS METHOD
host postgres all 192.168.93.0/24 ident sameuser
# Permet à un utilisateur de l'hôte 192.168.12.10 de se connecter à la base de
# données "postgres" si le mot de passe de l'utilisateur est correctement fourni.
#
# TYPE DATABASE USER CIDR-ADDRESS METHOD
host postgres all 192.168.12.10/32 md5
# Si aucune ligne "host" ne précède, ces deux lignes rejettent toutes
# les connexions en provenance de 192.168.54.1 (puisque cette entrée déclenche
# en premier), mais autorisent les connexions Kerberos 5 de n'importe où
# ailleurs sur l'Internet. Le masque zéro signifie qu'aucun bit de l'ip de
# l'hôte n'est considéré, de sorte à correspondre à tous les hôtes.
#
# TYPE DATABASE USER CIDR-ADDRESS METHOD
host all all 192.168.54.1/32 reject
host all all 0.0.0.0/0 krb5
# Permettre à tous les utilisateurs de se connecter depuis 192.168.x.x à n'importe
# quelle base de données s'ils passent la verification d'identification. Si,
# par exemple, ident indique que l'utilisateur est "bryanh" et qu'il
# demande à se connecter en tant qu'utilisateur PostgreSQL "guest1", la
# connexion n'est permise que s'il existe une entrée dans pg_ident.conf pour la
# correspondance "omicron" disant que "bryanh" est autorisé à se connecter en
# tant que "guest1".
#
# TYPE DATABASE USER CIDR-ADDRESS METHOD
host all all 192.168.0.0/16 ident omicron
# Si ces trois lignes traitant seules les connexions locales, elles
# n'autorisent les utilisateurs locaux qu'à se connecter à leur propre
# base de données (bases ayant le même nom que leur nom
# d'utilisateur) exception faite des administrateurs
# et des membres du rôle "support" qui peuvent se connecter à toutes les bases
# de données. Le fichier $PGDATA/admins contient une liste de noms
# d'administrateurs. Un mot de passe est requis dans tous les cas.
#
# TYPE DATABASE USER CIDR-ADDRESS METHOD
local sameuser all md5
local all @admins md5
local all +support md5
# Les deux dernières lignes ci-dessus peuvent être combinées en une seule ligne :
local all @admins,+support md5
# La colonne database peut aussi utiliser des listes et des noms de fichiers :
local db1,db2,@demodbs all md5
le plus simple des fichiers est le suivant
# Permettre à n'importe quel utilisateur du système local de se connecter
# à la base de données sous n'importe quel nom d'utilisateur au travers
# des sockets de domaine Unix (par défaut pour les connexions locales).
#
# TYPE DATABASE USER CIDR-ADDRESS METHOD
local all all trust
# Pareil mais en utilisant une colonne netmask distincte.
#
# TYPE DATABASE USER IP-ADDRESS IP-mask METHOD
host all all 127.0.0.1 255.255.255.255 trust
# Permettre à tous les utilisateurs de se connecter depuis 192.168.x.x à n'importe
# quelle base de données s'ils passent la verification d'identification.
# il srait preferable d'utiliser une méthode d'authentification du type
# md5 ou crypt
#
# TYPE DATABASE USER CIDR-ADDRESS METHOD
host all all 192.168.0.0/16 password
on peut faire encore plus simple
host all all 0.0.0.0/0 password
toutes personnes ayant le password pourra ce connecter
Note
il faut pour ce connecter sur une base trouver dans postgresql.conf les infos
- port 5423
- listen ‘*’
sinon il n’y a pas de port d’écoute et personne n’est autorisé dessus