Usage : commande pgbouncer
Synopsis
pgbouncer [-d][-v][-u user] <pgbouncer.ini>
pgbouncer -V|-h
Sous Windows, les options sont :
pgbouncer.exe [-v][-u user] <pgbouncer.ini>
pgbouncer.exe -V|-h
Options supplémentaires pour la configuration d’un service Windows :
pgbouncer.exe --regservice <pgbouncer.ini>
pgbouncer.exe --unregservice <pgbouncer.ini>
Description
pgbouncer est un pooler de connexions PostgreSQL. Toute application cliente peut se connecter à pgbouncer comme s’il était un serveur PostgreSQL, et pgbouncer établira une connexion vers le serveur réel, ou réutilisera l’une de ses connexions existantes.
L’objectif de pgbouncer est de réduire l’impact sur les performances lié à l’ouverture de nouvelles connexions vers PostgreSQL.
Afin de ne pas compromettre la sémantique transactionnelle pour le pooling de connexions, pgbouncer prend en charge plusieurs types de pooling lors de la rotation des connexions :
- Pooling de sessions
-
Méthode la moins intrusive. Lorsqu’un client se connecte, une connexion serveur lui est attribuée pour toute la durée pendant laquelle le client reste connecté. Lorsque le client se déconnecte, la connexion serveur est remise dans le pool. Il s’agit de la méthode par défaut.
- Pooling de transactions
-
Une connexion serveur est attribuée à un client uniquement pendant une transaction. Lorsque PgBouncer détecte la fin de la transaction, la connexion serveur sera remise dans le pool.
- Pooling d’instructions
-
Méthode la plus agressive. La connexion au serveur sera immédiatement remise dans le pool après la fin d’une requête. Les transactions multi-instructions sont interdites dans ce mode, car elles seraient rompues.
L’interface d’administration de pgbouncer propose de nouvelles commandes SHOW, disponibles lorsque l’on se connecte à une base de données « virtuelle » spéciale nommée pgbouncer.
Depuis la version 1.26.0, PgBouncer envoie aux clients, à la connexion, les valeurs ParameterStatus pgbouncer.version, pgbouncer.pool_mode et pgbouncer.max_prepared_statements. Les pilotes peuvent utiliser ces valeurs pour détecter PgBouncer et adapter leur comportement. Le paramètre optionnel login_notify_message
envoie un message NOTICE de bienvenue après une connexion réussie.
Démarrage rapide
La configuration et l’utilisation de base se déroulent comme suit.
-
Créez un fichier pgbouncer.ini. Détails dans pgbouncer(5). Exemple simple :
[databases] template1 = host=localhost port=5432 dbname=template1 [pgbouncer] listen_port = 6432 listen_addr = localhost auth_type = md5 auth_file = userlist.txt logfile = pgbouncer.log pidfile = pgbouncer.pid admin_users = someuser -
Créez un fichier
userlist.txtcontenant les utilisateurs autorisés :"someuser" "same_password_as_in_server" -
Lancez pgbouncer :
$ pgbouncer -d pgbouncer.ini -
Faites que votre application (ou le client psql) se connecte à pgbouncer au lieu de se connecter directement au serveur PostgreSQL :
$ psql -p 6432 -U someuser template1 -
Gérez pgbouncer en vous connectant à la base de données d’administration spéciale pgbouncer et en émettant
SHOW HELP;pour commencer :$ psql -p 6432 -U someuser pgbouncer pgbouncer=# SHOW HELP; NOTICE: Console usage DETAIL: SHOW [HELP|CONFIG|DATABASES|POOLS|CLIENTS|SERVERS|SOCKETS|LISTS|VERSION|...] SET key = arg RELOAD PAUSE RESUME SHUTDOWN [...] -
Si vous avez modifié le fichier pgbouncer.ini, vous pouvez le recharger à l’aide de :
pgbouncer=# RELOAD;
Options de ligne de commande
-d,--daemon- Exécuter en arrière-plan. Sans cette option, le processus s’exécute en premier plan.
En mode démon, la définition de
pidfileainsi que delogfileou desyslogest requise. Aucun message de journal ne sera écrit sur stderr après le passage en arrière-plan.Note : Ne fonctionne pas sous Windows ; pgbouncer doit y être exécuté en tant que service.
-uUSERNAME,--user=USERNAME- Passer à l’utilisateur spécifié au démarrage.
-v,--verbose- Augmenter le niveau de détail. Peut être utilisé plusieurs fois.
-q,--quiet- Soyez silencieux : ne pas journaliser sur stderr. Cela n’affecte pas le niveau de verbosité du journal, uniquement le fait que stderr ne doit pas être utilisé. À utiliser dans les scripts init.d.
-V,--version- Afficher la version.
-h,--help- Afficher l’aide courte.
--regservice- Win32 : inscrire PgBouncer pour s’exécuter en tant que service Windows. La valeur du paramètre de configuration service_name est utilisée comme nom d’enregistrement.
--unregservice- Win32 : désinscrire le service Windows.
Console d’administration
La console est disponible en se connectant normalement à la base de données pgbouncer :
$ psql -p 6432 pgbouncer
Seuls les utilisateurs listés dans les paramètres de configuration admin_users ou stats_users peuvent se connecter à la console. (Sauf lorsque auth_type=any, auquel cas tout utilisateur est autorisé à se connecter en tant que stats_user.)
En outre, le nom d’utilisateur pgbouncer est autorisé à se connecter sans mot de passe, si la connexion est établie via le socket Unix et si le client possède le même UID d’utilisateur Unix que le processus en cours d’exécution.
La console d’administration ne prend actuellement en charge que le protocole de requête simple. Certains pilotes utilisent le protocole de requête étendu pour toutes les commandes ; ces pilotes ne fonctionneront pas dans ce cas.
Commandes d’affichage
Les commandes SHOW produisent des informations. Chaque commande est décrite ci-dessous.
SHOW STATS
Affiche les statistiques. Dans cette commande et les commandes apparentées, les valeurs totales sont mesurées depuis le démarrage du processus, et les moyennes sont mises à jour à chaque stats_period.
- database
- Les statistiques sont présentées par base de données.
- total_xact_count
- Nombre total de transactions SQL regroupées par pgbouncer.
- total_query_count
- Nombre total de commandes SQL regroupées par pgbouncer.
- total_server_assignment_count
- Nombre total d’affectations d’un serveur à un client
- total_received
- Volume total en octets du trafic réseau reçu par pgbouncer.
- total_sent
- Volume total en octets de trafic réseau envoyé par pgbouncer.
- total_xact_time
- Nombre total de microsecondes passées par pgbouncer lorsqu’il est connecté à PostgreSQL dans une transaction, soit inactif en transaction, soit en exécution de requêtes.
- total_query_time
- Nombre total de microsecondes passées par pgbouncer lorsqu’il est activement connecté à PostgreSQL, en exécutant des requêtes.
- total_wait_time
- Temps passé par les clients en attente d’un serveur, en microsecondes. Mis à jour lorsque la connexion d’un client est associée à une connexion serveur.
- total_client_parse_count
- Nombre total de requêtes préparées créées par les clients. Ne s’applique que dans le mode de suivi des requêtes préparées nommées, voir
max_prepared_statements. - total_server_parse_count
- Nombre total de requêtes préparées créées par pgbouncer sur un serveur. Ne s’applique que dans le mode de suivi des requêtes préparées nommées, voir
max_prepared_statements. - total_bind_count
- Nombre total de requêtes préparées mises en état d’exécution par les clients et transmises à PostgreSQL par pgbouncer. Ne s’applique que dans le mode de suivi des requêtes préparées nommées, voir
max_prepared_statements. - total_client_login_count
- Nombre total de connexions client réussies.
- avg_xact_count
- Nombre moyen de transactions par seconde durant la dernière période de statistiques.
- avg_query_count
- Nombre moyen de requêtes par seconde durant la dernière période de statistiques.
- avg_server_assignment_count
- Nombre moyen de fois où un serveur est affecté à un client par seconde pendant la dernière période de statistiques.
- avg_recv
- Nombre moyen d’octets reçus (des clients) par seconde.
- avg_sent
- Nombre moyen d’octets envoyés (aux clients) par seconde.
- avg_xact_time
- Durée moyenne d’une transaction, en microsecondes.
- avg_query_time
- Durée moyenne d’exécution d’une requête, en microsecondes.
- avg_wait_time
- Temps passé par les clients en attente d’un serveur, en microsecondes (moyenne des temps d’attente des clients affectés à un backend pendant le
stats_periodactuel). - avg_client_parse_count
- Nombre moyen de requêtes préparées créées par les clients par seconde. Ne s’applique que dans le mode de suivi des requêtes préparées nommées, voir
max_prepared_statements. - avg_server_parse_count
- Nombre moyen de requêtes préparées créées par pgbouncer sur un serveur par seconde. Ne s’applique que dans le mode de suivi des requêtes préparées nommées, voir
max_prepared_statements. - avg_bind_count
- Nombre moyen de requêtes préparées mises en état d’exécution par les clients et transmises à PostgreSQL par pgbouncer par seconde. Ne s’applique que dans le mode de suivi des requêtes préparées nommées, voir
max_prepared_statements. - avg_client_login_count
- Nombre moyen de connexions client réussies par seconde.
SHOW STATS_TOTALS
Affiche les statistiques cumulées par base de données correspondant aux champs total_ de SHOW STATS. Les noms des colonnes renvoyées ne portent pas le préfixe total_ : la colonne total_query_count s’appelle ici query_count, par exemple.
SHOW STATS_AVERAGES
Sous-ensemble de SHOW STATS affichant les valeurs moyennes (avg_).
SHOW TOTALS
Comme SHOW STATS, mais agrégé pour toutes les bases de données.
SHOW SERVERS
- type
- S, pour serveur.
- user
- Nom d’utilisateur que pgbouncer utilise pour se connecter au serveur.
- database
- Nom de la base de données.
- replication
- Si la connexion serveur utilise la réplication. Peut être none, logical ou physical.
- state
- État de la connexion serveur de PgBouncer, l’une des valeurs suivantes : active, idle, used, tested, new, active_cancel, being_canceled.
- addr
- Adresse IP du serveur PostgreSQL.
- port
- Port du serveur PostgreSQL.
- local_addr
- Adresse de départ de la connexion sur la machine locale.
- local_port
- Port de départ de la connexion sur la machine locale.
- connect_time
- Date de la connexion.
- request_time
- Date de la dernière requête émise.
- wait
- Non utilisé pour les connexions serveur.
- wait_us
- Non utilisé pour les connexions serveur.
- close_needed
- 1 si la connexion sera fermée dès que possible, car un rechargement du fichier de configuration ou une mise à jour DNS a modifié les informations de connexion ou que RECONNECT a été émis.
- ptr
- Adresse de l’objet interne pour cette connexion.
- link
- Adresse de la connexion client avec laquelle le serveur est apparié.
- remote_pid
- PID du processus serveur backend. En cas de connexion via un socket Unix et si le système d’exploitation prend en charge la récupération des informations sur le PID, il s’agit du PID système. Sinon, il est extrait du paquet d’annulation envoyé par le serveur, qui doit correspondre au PID si le serveur est PostgreSQL, mais il s’agit d’un nombre aléatoire si le serveur est un autre PgBouncer.
- tls
- Chaîne contenant les informations de connexion TLS, ou chaîne vide si TLS n’est pas utilisé.
- application_name
- Chaîne de caractères contenant le
application_namedéfini sur la connexion client liée, ou vide si ce paramètre n’est pas défini, ou s’il n’existe pas de connexion liée. - prepared_statements
- Le nombre de requêtes préparées présentes sur le serveur. Ce nombre est limité par le paramètre
max_prepared_statements. - id
- ID unique du serveur.
SHOW CLIENTS
- type
- C, pour client.
- user
- Utilisateur du client connecté.
- database
- Nom de la base de données.
- replication
- Si la connexion client utilise la réplication. Peut être none, logical ou physical.
- state
- État de la connexion client, l’une des valeurs suivantes : active (connexions clients liées à des connexions serveur), idle (connexions clients sans requête en attente de traitement), waiting, active_cancel_req ou waiting_cancel_req.
- addr
- Adresse IP du client.
- port
- Port source du client.
- local_addr
- Adresse de bout de connexion sur la machine locale.
- local_port
- Port de bout de connexion sur la machine locale.
- connect_time
- Horodatage de l’instant de connexion.
- request_time
- Horodatage de la dernière requête du client.
- wait
- Temps d’attente actuel en secondes.
- wait_us
- Partie en microsecondes du temps d’attente actuel.
- close_needed
- non utilisé pour les clients
- ptr
- Adresse de l’objet interne pour cette connexion.
- link
- Adresse de la connexion serveur avec laquelle le client est apparié.
- remote_pid
- Identifiant de processus, au cas où le client se connecterait via une socket Unix et que le système d’exploitation le permette.
- tls
- Chaîne contenant les informations de connexion TLS, ou chaîne vide si TLS n’est pas utilisé.
- application_name
- Chaîne de caractères contenant le
application_namedéfini par le client pour cette connexion, ou vide si ce champ n’a pas été défini. - prepared_statements
- Nombre de requêtes préparées par le client
- id
- ID unique du client.
SHOW POOLS
Une nouvelle entrée de pool est créée pour chaque couple (base de données, utilisateur).
- database
- Nom de la base de données.
- user
- Nom d’utilisateur.
- cl_active
- Connexions clientes qui sont soit associées à des connexions serveur, soit inactives sans requête en attente de traitement.
- cl_waiting
- Connexions client qui ont envoyé des requêtes mais n’ont pas encore obtenu de connexion serveur.
- cl_active_cancel_req
- Connexions clientes ayant transmis des demandes d’annulation de requête au serveur et en attente de la réponse du serveur.
- cl_waiting_cancel_req
- Connexions clientes qui n’ont pas encore transmis les demandes d’annulation de requête au serveur.
- sv_active
- Connexions serveur liées à un client.
- sv_active_cancel
- Connexions serveur en cours d’envoi d’une demande d’annulation.
- sv_being_canceled
- Serveurs qui pourraient normalement devenir inactifs mais qui attendent de le devenir jusqu’à ce que toutes les demandes d’annulation en cours aient été traitées, celles-ci ayant été envoyées pour annuler une requête sur ce serveur.
- sv_idle
- Connexions serveur inutilisées et immédiatement disponibles pour les requêtes clients.
- sv_used
- Connexions serveur qui ont été inactives pendant plus de
server_check_delay, donc elles nécessitentserver_check_querypour pouvoir être utilisées à nouveau. - sv_tested
- Connexions serveur exécutant actuellement soit
server_reset_query, soitserver_check_query. - sv_login
- Connexions serveur actuellement en cours de connexion.
- maxwait
- Temps d’attente, en secondes, du premier (plus ancien) client dans la file d’attente. Si cette valeur commence à augmenter, c’est que le pool de serveurs actuel ne traite pas les requêtes assez rapidement. La cause peut être soit un serveur surchargé, soit une valeur de pool_size trop faible.
- maxwait_us
- Partie en microsecondes du temps d’attente maximal.
- pool_mode
- Le mode de pooling utilisé.
- load_balance_hosts
- Le paramètre load_balance_hosts utilisé si l’hôte du pool contient une liste séparée par des virgules.
SHOW PEER_POOLS
Une nouvelle entrée peer_pool est créée pour chaque pair configuré.
- peer_id
- ID de l’entrée pair configurée.
- cl_active_cancel_req
- Connexions clientes ayant transmis des demandes d’annulation de requête au serveur et en attente de la réponse du serveur.
- cl_waiting_cancel_req
- Connexions clientes qui n’ont pas encore transmis les demandes d’annulation de requête au serveur.
- sv_active_cancel
- Connexions serveur en cours d’envoi d’une demande d’annulation.
- sv_login
- Connexions serveur actuellement en cours de connexion.
SHOW LISTS
Affiche les listes internes suivantes et le nombre de leurs éléments. Chaque liste occupe une ligne, avec les colonnes list et items :
- databases
- Nombre de bases de données.
- users
- Nombre d’utilisateurs.
- peers
- Nombre de pairs configurés.
- pools
- Nombre de pools.
- peer_pools
- Nombre de pools de pairs.
- free_clients
- Nombre de clients libres. Ce sont des clients déconnectés, mais PgBouncer conserve la mémoire qui leur a été allouée afin qu’elle puisse être réutilisée pour de futurs clients et éviter des allocations.
- used_clients
- Nombre de clients utilisés.
- login_clients
- Nombre de clients en état login.
- free_servers
- Nombre de serveurs libres. Ce sont des serveurs déconnectés, mais PgBouncer conserve la mémoire qui leur a été allouée afin qu’elle puisse être réutilisée pour de futurs serveurs et éviter des allocations.
- used_servers
- Nombre de serveurs utilisés.
- dns_names
- Nombre de noms DNS dans le cache.
- dns_zones
- Nombre de zones DNS en cache.
- dns_queries
- Nombre de requêtes DNS en cours.
- dns_pending
- non utilisé
SHOW USERS
- name
- Le nom d’utilisateur
- pool_size
- La valeur de remplacement de pool_size définie par l’utilisateur, ou une chaîne vide si elle n’est pas définie.
- reserve_pool_size
- La valeur de remplacement de reserve_pool_size définie par l’utilisateur, ou une chaîne vide si elle n’est pas définie.
- pool_mode
- Le mode de pooling de remplacement défini par l’utilisateur, ou NULL si non défini.
- max_user_connections
- Paramètre max_user_connections de l’utilisateur. Si ce paramètre n’est pas défini pour cet utilisateur spécifique, la valeur par défaut sera affichée.
- current_connections
- Nombre actuel de connexions serveur ouvertes par cet utilisateur vers tous les serveurs.
- max_user_client_connections
- Paramètre max_user_client_connections de l’utilisateur. Si ce paramètre n’est pas défini pour cet utilisateur spécifique, la valeur par défaut sera affichée.
- current_client_connections
- Nombre actuel de connexions clients ouvertes par cet utilisateur vers PgBouncer.
SHOW DATABASES
- name
- Nom de l’entrée de base de données configurée.
- host
- Hôte auquel PgBouncer se connecte.
- port
- Port auquel PgBouncer se connecte.
- database
- Nom réel de la base de données vers laquelle PgBouncer se connecte.
- force_user
- Lorsque l’utilisateur est spécifié dans la chaîne de connexion, la connexion entre PgBouncer et PostgreSQL est forcée à l’utilisateur indiqué, quel que soit l’utilisateur client.
- pool_size
- Nombre maximal de connexions vers le serveur.
- min_pool_size
- Nombre minimum de connexions vers le serveur.
- reserve_pool_size
- Nombre maximal de connexions supplémentaires pour cette base de données.
- server_lifetime
- Durée maximale de vie d’une connexion serveur pour cette base de données
- pool_mode
- Le mode de pooling de remplacement de la base de données, ou NULL si le mode par défaut doit être utilisé à la place.
- load_balance_hosts
- L’option load_balance_hosts de la base de données si l’hôte contient une liste séparée par des virgules.
- max_connections
- Nombre maximal de connexions serveur autorisées pour cette base de données, tel que défini par max_db_connections, soit globalement, soit par base de données.
- current_connections
- Nombre actuel de connexions serveur pour cette base de données.
- max_client_connections
- Nombre maximal de connexions clients autorisées pour cette base de données. Il est défini par le paramètre max_db_client_connections de la base de données ou, si celui-ci n’est pas défini, par sa valeur globale par défaut.
- current_client_connections
- Nombre actuel de connexions clients pour cette base de données.
- paused
- 1 si cette base de données est actuellement en pause, sinon 0.
- disabled
- 1 si cette base de données est actuellement désactivée, sinon 0.
SHOW PEERS
- peer_id
- Identifiant de l’entrée pair configurée.
- host
- Hôte auquel PgBouncer se connecte.
- port
- Port auquel PgBouncer se connecte.
- pool_size
- Nombre maximal de connexions serveur pouvant être établies vers ce pair
SHOW SOCKETS, SHOW ACTIVE_SOCKETS
Affiche des informations de bas niveau sur les sockets ou uniquement les sockets actifs. Cela inclut les informations affichées sous SHOW CLIENTS et SHOW SERVERS, ainsi que d’autres informations de niveau plus bas.
SHOW CONFIG
Affiche les paramètres de configuration actuels, un par ligne, avec les colonnes suivantes :
- key
- Nom de la variable de configuration
- value
- Valeur de configuration
- default
- Valeur par défaut de la configuration
- changeable
- Soit yes, soit no : indique si la variable peut être modifiée pendant l’exécution. Si no, la variable ne peut être modifiée qu’au démarrage. Utilisez SET pour modifier une variable en cours d’exécution.
SHOW MEM
Affiche des informations de bas niveau sur les tailles actuelles des différentes allocations mémoire internes. Les informations présentées sont sujettes à modification.
SHOW DNS_HOSTS
Affiche les noms d’hôte présents dans le cache DNS.
- hostname
- Nom d’hôte.
- ttl
- Nombre de secondes avant la prochaine recherche.
- addrs
- Liste d’adresses séparées par des virgules.
SHOW DNS_ZONES
Affiche les zones DNS en mémoire cache.
- zonename
- Nom de la zone.
- serial
- Numéro de série actuel.
- count
- Noms d’hôtes appartenant à cette zone.
SHOW VERSION
Affiche la chaîne de version de PgBouncer.
SHOW STATE
Affiche les paramètres d’état de PgBouncer. Les états actuels sont active et paused.
Commandes de contrôle du processus
PAUSE [db]
PgBouncer tente de se déconnecter de tous les serveurs. La déconnexion de chaque connexion serveur attend que cette connexion serveur soit libérée selon le mode de pooling du pool serveur (en mode pooling de transactions, la transaction doit être terminée ; en mode pooling d’instructions, l’instruction doit être terminée ; et en mode pooling de sessions, le client doit se déconnecter). La commande ne retourne pas avant que toutes les connexions serveur n’aient été déconnectées. À utiliser lors d’un redémarrage de la base de données.
Si le nom de la base de données est spécifié, seule cette base de données sera mise en pause.
Les nouvelles connexions clients vers une base de données en pause resteront en attente jusqu’à l’appel de RESUME.
DISABLE db
Refuser toutes les nouvelles connexions clients sur la base de données donnée.
ENABLE db
Autoriser de nouvelles connexions clients après une commande précédente DISABLE.
RECONNECT [db]
Ferme chaque connexion serveur ouverte pour la base de données donnée, ou pour toutes les bases de données, après sa libération (selon le mode de pooling), même si sa durée de vie n’est pas encore écoulée. De nouvelles connexions serveur peuvent être établies immédiatement et se connecteront selon les paramètres de taille du pool.
Cette commande est utile lorsque la configuration de connexion au serveur a changé, par exemple pour effectuer un basculement progressif vers un nouveau serveur. Elle n’est pas nécessaire lorsqu’une chaîne de connexion dans le fichier pgbouncer.ini a été modifiée et rechargée (voir RELOAD) ou lorsque la résolution DNS a changé, car dans ces cas, la commande équivalente sera exécutée automatiquement. Cette commande n’est nécessaire que si quelque chose en aval de PgBouncer route les connexions.
Après l’exécution de cette commande, une période prolongée peut s’écouler durant laquelle certaines connexions serveur sont dirigées vers une ancienne destination et d’autres vers une nouvelle destination. Cette situation n’est probablement pertinente que lors du basculement du trafic en lecture seule entre des réplicas en lecture seule, ou lors du basculement entre les nœuds d’une configuration de réplication multimaster. Si toutes les connexions doivent être redirigées simultanément, PAUSE est recommandé à la place. Pour fermer les connexions serveur sans attendre (par exemple, lors d’un basculement d’urgence plutôt que d’un basculement progressif), envisagez également KILL.
KILL [db]
Déconnecter immédiatement toutes les connexions clients et serveurs pour la base de données indiquée ou pour toutes les bases de données, en excluant la base de données d’administration.
Les nouvelles connexions clients vers une base de données ayant subi un KILL attendront jusqu’à l’appel de RESUME.
KILL_CLIENT id
Tuer immédiatement la connexion client spécifiée, ainsi que toutes les connexions serveur associées à ce client. Le client à tuer est identifié par la valeur id, qui peut être obtenue à l’aide de la commande SHOW CLIENTS.
Une commande d’exemple aura une forme semblable à KILL_CLIENT 1234.
RESUME [db]
Reprendre le travail après une commande KILL ou PAUSE précédente.
SHUTDOWN
Le processus PgBouncer se terminera.
SHUTDOWN WAIT_FOR_SERVERS
Arrête d’accepter de nouvelles connexions et effectue l’arrêt après la libération de tous les serveurs. Cela revient essentiellement à émettre PAUSE et SHUTDOWN, sauf que cette commande cesse également d’accepter de nouvelles connexions pendant l’attente du PAUSE, tout en déconnectant immédiatement les clients en attente d’une connexion serveur. Veuillez noter que les sockets UNIX resteront ouverts pendant l’arrêt, mais n’accepteront que les connexions à la console d’administration de PgBouncer.
SHUTDOWN WAIT_FOR_CLIENTS
Arrête d’accepter de nouvelles connexions et arrête le processus une fois que tous les clients existants se sont déconnectés. Veuillez noter que les sockets UNIX resteront ouverts pendant l’arrêt, mais n’accepteront que les connexions à la console d’administration de pgbouncer. Cette commande peut être utilisée pour effectuer un redémarrage progressif sans interruption de deux processus PgBouncer en suivant la procédure suivante :
- Faites fonctionner deux ou plusieurs processus PgBouncer sur le même port en utilisant
so_reuseport(configurer le peering est recommandé, mais non obligatoire). Pour obtenir une interruption nulle lors du redémarrage, redémarrez ces processus un par un, laissant ainsi les autres en cours d’exécution afin d’accepter les connexions pendant qu’un processus est redémarré. - Choisissez un processus à redémarrer en premier, appelons-le A.
- Exécutez
SHUTDOWN WAIT_FOR_CLIENTS(ou envoyezSIGTERM) sur le processus A. - Forcez tous les clients à se reconnecter. Cela peut être réalisé en attendant un certain temps jusqu’à ce que le pooler côté client provoque les reconnexions en raison de son
server_idle_timeout(ou d’une configuration similaire). Sinon, si aucun pooler côté client n’est utilisé, cela peut être fait en redémarrant les clients. Une fois que tous les clients se sont reconnectés, le processus A s’arrêtera automatiquement, car aucun client ne sera plus connecté à celui-ci. - Redémarrez le processus A.
- Répétez les étapes 3, 4 et 5 pour chacun des processus restants, un par un, jusqu’à ce que tous les processus aient été redémarrés.
RELOAD
Le processus PgBouncer recharge ses fichiers de configuration et met à jour les paramètres modifiables. Cela inclut le fichier de configuration principal ainsi que les fichiers spécifiés par les paramètres auth_file et auth_hba_file.
PgBouncer détecte lorsqu’un rechargement du fichier de configuration modifie les paramètres de connexion d’une définition de base de données. Une connexion serveur existante vers l’ancienne destination sera fermée lors de sa prochaine libération (selon le mode de pooling), et les nouvelles connexions serveur utiliseront immédiatement les paramètres de connexion mis à jour.
WAIT_CLOSE [db]
Attend que toutes les connexions serveur, de la base de données spécifiée ou de toutes les bases de données, aient quitté l’état “close_needed” (voir SHOW SERVERS). Cette commande peut être appelée après un RECONNECT ou un RELOAD pour attendre que le changement de configuration correspondant ait été pleinement activé, par exemple dans des scripts de basculement.
Autres commandes
SET key = arg
Modifie un paramètre de configuration (voir également SHOW CONFIG). Par exemple :
SET log_connections = 1;
SET server_check_query = 'select 2';
(Remarque : cette commande est exécutée sur la console d’administration de PgBouncer et définit les paramètres de PgBouncer. Une commande SET exécutée sur une autre base de données sera transmise au serveur PostgreSQL comme toute autre commande SQL.)
Signaux
- SIGHUP
- Recharger la configuration. Équivalent à exécuter la commande RELOAD sur la console d’administration.
- SIGTERM
- Arrêt très sécurisé. Attend que tous les clients existants se déconnectent, mais n’accepte plus de nouvelles connexions. Cela équivaut à émettre la commande SHUTDOWN WAIT_FOR_CLIENTS depuis la console d’administration. Si ce signal est reçu alors qu’un arrêt est déjà en cours, un « arrêt immédiat » est déclenché à la place d’un « arrêt très sécurisé ». Dans les versions de PgBouncer antérieures à 1.23.0, ce signal provoquait un « arrêt immédiat ».
- SIGINT
- Arrêt sécurisé. Équivalent à l’envoi de SHUTDOWN WAIT_FOR_SERVERS depuis la console. Si ce signal est reçu pendant qu’un arrêt est déjà en cours, un « arrêt immédiat » est déclenché au lieu d’un « arrêt sécurisé ».
- SIGQUIT
- Arrêt immédiat. Équivalent à l’envoi de SHUTDOWN depuis la console d’administration.
- SIGUSR1
- Identique à l’envoi de PAUSE depuis la console d’administration.
- SIGUSR2
- Identique à l’envoi de RESUME depuis la console d’administration.
Paramètres Libevent
Tiré de la documentation de Libevent :
Il est possible de désactiver la prise en charge d’epoll, kqueue, devpoll, poll ou select en définissant la variable d’environnement EVENT_NOEPOLL, EVENT_NOKQUEUE, EVENT_NODEVPOLL, EVENT_NOPOLL ou EVENT_NOSELECT, respectivement.
En définissant la variable d’environnement EVENT_SHOW_METHOD, libevent affiche la méthode de notification du noyau qu’il utilise.
Voir aussi
pgbouncer(5) - page de manuel des descriptions des paramètres de configuration