---
title: Charmhub | Deploy PgBouncer using Charmhub - The Open Operator Collection
description: Deploy the latest version of PgBouncer on any cloud.
url: https://charmhub.io/pgbouncer/configurations
---

# PgBouncer

[Canonical](https://charmhub.io/publisher/data-platform "View all packages from Canonical")

* [Canonical](https://charmhub.io/publisher/data-platform "View all packages from Canonical")
* [Databases](https://charmhub.io/?filter=databases)

Platform:

24.04

22.04

20.04

18.04

16.04

1/stable 1092

```
juju deploy pgbouncer --channel 1/stable
```

[Learn to deploy on juju >](https://juju.is/docs/juju/manage-applications)

* [listen\_port](https://charmhub.io/pgbouncer/configurations#listen_port)
* [local\_connection\_type](https://charmhub.io/pgbouncer/configurations#local_connection_type)
* [max\_db\_connections](https://charmhub.io/pgbouncer/configurations#max_db_connections)
* [max\_prepared\_statements](https://charmhub.io/pgbouncer/configurations#max_prepared_statements)
* [metrics\_port](https://charmhub.io/pgbouncer/configurations#metrics_port)
* [pool\_mode](https://charmhub.io/pgbouncer/configurations#pool_mode)
* [vip](https://charmhub.io/pgbouncer/configurations#vip)

[Learn about configurations >](https://juju.is/docs/juju/configuration#heading--application-configuration)

* listen\_port | int

  Default: 6432

  The port on which pgbouncer listens for traffic. Corresponds to
  listen\_port in pgbouncer config.
* local\_connection\_type | string

  Default: tcp

  Type of local connectivity to provide. Must be either 'tcp' or 'uds'. Only applies to the database interface.
* max\_db\_connections | int

  Default: 100

  Do not allow more than this many server connections per database
  (regardless of user). This considers the PgBouncer database that the
  client has connected to, not the PostgreSQL database of the outgoing
  connection.

  Note that when you hit the limit, closing a client connection to one pool
  will not immediately allow a server connection to be established for
  another pool, because the server connection for the first pool is still
  open. Once the server connection closes (due to idle timeout), a new
  server connection will immediately be opened for the waiting pool.

  This is used to calculate the following pgbouncer.ini config options,
  which are documented in the pgbouncer config docs here:
  https://www.pgbouncer.org/config.html.

  + Firstly, the number of pgbouncer instances is calculated based on the
    number of CPU cores in the current deployment.
  + effective DB connections = max\_db\_connections / pgbouncer instances
  + default\_pool\_size = effective connections / 2
  + min\_pool\_size = effective connections / 4
  + reserve\_pool\_size = effective connections / 4

  If max\_db\_connections is set to 0, the derivatives are set thusly, based
  on pgbouncer defaults:

  + default\_pool\_size = 20
  + min\_pool\_size = 10
  + reserve\_pool\_size = 10

  0 = unlimited.
* max\_prepared\_statements | int

  Default: 100

  Number of prepared statements kept alive on backend connections. Possible values are between 0 and 1000.
  A value of 0 disables prepared statements.

  Default: 100
* metrics\_port | int

  Default: 9127

  The port on which the pgbouncer prometheus exporter serves metrics.
* pool\_mode | string

  Default: session

  Specifies when a server connection can be reused by other clients. Can
  be one of the following values:

  session
  Server is released back to pool after client disconnects. Default.

  transaction
  Server is released back to pool after transaction finishes.

  statement
  Server is released back to pool after query finishes. Transactions
  spanning multiple statements are disallowed in this mode.
* vip | string

  Virtual IP to use to front pgbouncer units. Used only in case of external node connection.
