# Использование команды pgbouncer

> Использование командной строки и административной консоли PgBouncer

---

Индекс LLMS: [llms.txt](/ru/llms.txt)

---

--------

## Синтаксис {#synopsis}

    pgbouncer [-d][-R][-v][-u user] <pgbouncer.ini>
    pgbouncer -V|-h

Параметры для Windows:

    pgbouncer.exe [-v][-u user] <pgbouncer.ini>
    pgbouncer.exe -V|-h

Дополнительные параметры для настройки службы Windows:

    pgbouncer.exe --regservice   <pgbouncer.ini>
    pgbouncer.exe --unregservice <pgbouncer.ini>

--------

## Описание {#description}

**PgBouncer** — менеджер пула соединений PostgreSQL. Любое клиентское приложение может
подключаться к **PgBouncer** как к серверу PostgreSQL, а **PgBouncer** создаст
соединение с настоящим сервером либо повторно использует одно из существующих
соединений.

Цель **PgBouncer** — уменьшить влияние открытия новых соединений с PostgreSQL
на производительность.

Чтобы объединение соединений в пул не нарушало семантику транзакций,
**PgBouncer** поддерживает несколько режимов пула при перераспределении соединений:

Сеансовый режим пула

:   Наиболее щадящий метод. При подключении клиента ему назначается серверное
    соединение на всё время клиентского соединения. После отключения клиента
    серверное соединение возвращается в пул. Это режим по умолчанию.

Транзакционный режим пула

:   Серверное соединение назначается клиенту только на время транзакции. Когда
    PgBouncer определяет завершение транзакции, серверное соединение возвращается
    в пул.

Режим пула на уровне операторов

:   Наиболее строгий метод. Серверное соединение возвращается в пул сразу после
    завершения запроса. В этом режиме запрещены транзакции из нескольких
    операторов, поскольку они работать не будут.

Административный интерфейс **PgBouncer** состоит из дополнительных команд
`SHOW`, доступных при подключении к специальной «виртуальной» базе данных
**pgbouncer**.

--------

## Быстрый запуск {#quick-start}

Базовая настройка и использование выполняются следующим образом.

1. Создайте файл pgbouncer.ini. Подробности приведены в **pgbouncer(5)**. Простой пример:

        [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

2. Создайте файл `userlist.txt` с пользователями, которым разрешён вход:

        "someuser" "same_password_as_in_server"

3. Запустите **PgBouncer**:

        $ pgbouncer -d pgbouncer.ini

4. Подключите приложение или клиент **psql** к **PgBouncer**, а не напрямую
   к серверу PostgreSQL:

        $ psql -p 6432 -U someuser template1

5. Для управления **PgBouncer** подключитесь к специальной административной
   базе данных **pgbouncer** и сначала выполните `SHOW HELP;`:

        $ psql -p 6432 -U someuser pgbouncer
        pgbouncer=# SHOW HELP;
        NOTICE:  Console usage
        DETAIL:
          SHOW [HELP|CONFIG|DATABASES|FDS|POOLS|CLIENTS|SERVERS|SOCKETS|LISTS|VERSION|...]
          SET key = arg
          RELOAD
          PAUSE
          SUSPEND
          RESUME
          SHUTDOWN
          [...]

6. После изменения файла pgbouncer.ini перезагрузите его командой:

        pgbouncer=# RELOAD;

--------

## Ключи командной строки {#command-line-switches}

`-d`, `--daemon`
:   Запустить в фоновом режиме. Без этого ключа процесс работает на переднем плане.

    В режиме демона обязательно задать `pidfile`, а также `logfile` или `syslog`.
    После перехода в фоновый режим сообщения журнала не записываются в stderr.

    Примечание: в Windows этот ключ не работает; там **PgBouncer** должен быть запущен как служба.

`-R`, `--reboot`
:   **УСТАРЕЛ: вместо этого параметра используйте поэтапный перезапуск нескольких процессов PgBouncer, прослушивающих один порт с помощью so_reuseport**.
    Выполнить перезапуск без остановки обслуживания: подключиться к работающему
    процессу, получить от него открытые сокеты и использовать их. Если активного
    процесса нет, выполняется обычный запуск.
    Примечание: работает только при поддержке Unix-сокетов операционной системой
    и включённом в конфигурации `unix_socket_dir`. Не работает в Windows и с
    соединениями TLS — они разрываются.

`-u` _USERNAME_, `--user=` _USERNAME_
:   При запуске переключиться на указанного пользователя.

`-v`, `--verbose`
:   Увеличить подробность вывода. Можно указывать несколько раз.

`-q`, `--quiet`
:   Не записывать журнал в stderr. Это не влияет на подробность ведения журнала,
    а лишь запрещает использование stderr. Предназначено для сценариев init.d.

`-V`, `--version`
:   Показать версию.

`-h`, `--help`
:   Показать краткую справку.

`--regservice`
:   Win32: зарегистрировать PgBouncer как службу Windows. В качестве имени
    регистрации используется значение параметра конфигурации **service_name**.

`--unregservice`
:   Win32: отменить регистрацию службы Windows.

--------

## Административная консоль {#admin-console}

Консоль доступна при обычном подключении к базе данных **pgbouncer**:

    $ psql -p 6432 pgbouncer

Вход в консоль разрешён только пользователям, перечисленным в параметрах
конфигурации **admin_users** или **stats_users**. Исключение — `auth_type=any`:
в этом случае любой пользователь допускается как stats_user.

Кроме того, пользователь **pgbouncer** может войти без пароля, если подключение
выполняется через Unix-сокет, а UID пользователя Unix у клиента совпадает с UID
работающего процесса.

Сейчас административная консоль поддерживает только простой протокол запросов.
Некоторые драйверы используют расширенный протокол для всех команд; с консолью
они работать не будут.

### Команды SHOW {#show-commands}

Команды **SHOW** выводят сведения. Каждая команда описана ниже.

#### SHOW STATS {#show-stats}

Показывает статистику. В этой и связанных командах итоговые значения считаются
с момента запуска процесса, а средние обновляются каждые `stats_period`.

database
:   Статистика представлена по каждой базе данных.

total_xact_count
:   Общее число транзакций SQL, обработанных пулом **PgBouncer**.

total_query_count
:   Общее число команд SQL, обработанных пулом **PgBouncer**.

total_server_assignment_count
:   Общее число назначений сервера клиенту.

total_received
:   Общий объём сетевого трафика в байтах, полученного **PgBouncer**.

total_sent
:   Общий объём сетевого трафика в байтах, отправленного **PgBouncer**.

total_xact_time
:   Общее число микросекунд, проведённых **PgBouncer** в соединении с PostgreSQL
    внутри транзакции — в состоянии ожидания либо при выполнении запросов.

total_query_time
:   Общее число микросекунд, проведённых **PgBouncer** в активном соединении
    с PostgreSQL при выполнении запросов.

total_wait_time
:   Время ожидания сервера клиентами в микросекундах. Обновляется при назначении
    клиентскому соединению соединения с бэкендом.

total_client_parse_count
:   Общее число подготовленных операторов, созданных клиентами. Применимо только
    в режиме отслеживания именованных подготовленных операторов; см. `max_prepared_statements`.

total_server_parse_count
:   Общее число подготовленных операторов, созданных **PgBouncer** на сервере.
    Применимо только в режиме отслеживания именованных подготовленных операторов;
    см. `max_prepared_statements`.

total_bind_count
:   Общее число подготовленных операторов, которые клиенты подготовили к выполнению,
    а **PgBouncer** передал PostgreSQL. Применимо только в режиме отслеживания
    именованных подготовленных операторов; см. `max_prepared_statements`.

avg_xact_count
:   Среднее число транзакций в секунду за последний период статистики.

avg_query_count
:   Среднее число запросов в секунду за последний период статистики.

avg_server_assignment_count
:   Среднее число назначений сервера клиенту в секунду за последний период статистики.

avg_recv
:   Среднее число байтов, полученных от клиентов за секунду.

avg_sent
:   Среднее число байтов, отправленных клиентам за секунду.

avg_xact_time
:   Средняя длительность транзакции в микросекундах.

avg_query_time
:   Средняя длительность запроса в микросекундах.

avg_wait_time
:   Время ожидания сервера клиентами в микросекундах — среднее время ожидания
    клиентов, которым в текущем `stats_period` назначен бэкенд.

avg_client_parse_count
:   Среднее число подготовленных операторов, созданных клиентами. Применимо
    только в режиме отслеживания именованных подготовленных операторов; см.
    `max_prepared_statements`.

avg_server_parse_count
:   Среднее число подготовленных операторов, созданных **PgBouncer** на сервере.
    Применимо только в режиме отслеживания именованных подготовленных операторов;
    см. `max_prepared_statements`.

avg_bind_count
:   Среднее число подготовленных операторов, которые клиенты подготовили к
    выполнению, а **PgBouncer** передал PostgreSQL. Применимо только в режиме
    отслеживания именованных подготовленных операторов; см. `max_prepared_statements`.

#### SHOW STATS_TOTALS {#show-stats_totals}

Подмножество **SHOW STATS**, отображающее итоговые значения (**total_**).


#### SHOW STATS_AVERAGES {#show-stats_averages}

Подмножество **SHOW STATS**, отображающее средние значения (**avg_**).

#### SHOW TOTALS {#show-totals}

Аналог **SHOW STATS** с агрегированием по всем базам данных.

#### SHOW SERVERS {#show-servers}

type
:   S — сервер.

user
:   Имя пользователя, от которого **PgBouncer** подключается к серверу.

database
:   Имя базы данных.

replication
:   Использует ли серверное соединение репликацию. Возможные значения: **none**, **logical** или **physical**.

state
:   Состояние серверного соединения PgBouncer: **active**, **idle**, **used**,
    **tested**, **new**, **active_cancel** или **being_canceled**.

addr
:   IP-адрес сервера PostgreSQL.

port
:   Порт сервера PostgreSQL.

local_addr
:   Начальный адрес соединения на локальном компьютере.

local_port
:   Начальный порт соединения на локальном компьютере.

connect_time
:   Время установления соединения.

request_time
:   Время отправки последнего запроса.

wait
:   Для серверных соединений не используется.

wait_us
:   Для серверных соединений не используется.

close_needed
:   1, если соединение будет закрыто при первой возможности, поскольку
    перезагрузка файла конфигурации или обновление DNS изменили сведения о
    соединении либо была выполнена команда **RECONNECT**.

ptr
:   Адрес внутреннего объекта этого соединения.

link
:   Адрес клиентского соединения, связанного с сервером.

remote_pid
:   PID серверного процесса бэкенда. Если соединение установлено через
    Unix-сокет и операционная система поддерживает получение идентификатора
    процесса, это PID ОС. В противном случае он извлекается из отправленного
    сервером пакета отмены: для сервера PostgreSQL это должен быть PID, а для
    другого PgBouncer — случайное число.

tls
:   Строка со сведениями о соединении TLS либо пустая строка, если TLS не используется.

application_name
:   Строка со значением `application_name`, заданным в связанном клиентском
    соединении; пустая строка, если значение не задано или связанного соединения нет.

prepared_statements
:  Число подготовленных на сервере операторов. Оно ограничено параметром
   `max_prepared_statements`.

id
:   Уникальный идентификатор сервера.


#### SHOW CLIENTS {#show-clients}

type
:   C — клиент.

user
:   Пользователь подключённого клиента.

database
:   Имя базы данных.

replication
:   Использует ли клиентское соединение репликацию. Возможные значения: **none**, **logical** или **physical**.

state
:   Состояние клиентского соединения: **active** (клиентские соединения,
    связанные с серверными), **idle** (клиентские соединения без ожидающих
    обработки запросов), **waiting**, **active_cancel_req** или **waiting_cancel_req**.

addr
:   IP-адрес клиента.

port
:   Исходный порт клиента.

local_addr
:   Конечный адрес соединения на локальном компьютере.

local_port
:   Конечный порт соединения на локальном компьютере.

connect_time
:   Отметка времени установления соединения.

request_time
:   Отметка времени последнего запроса клиента.

wait
:   Текущее время ожидания в секундах.

wait_us
:   Микросекундная часть текущего времени ожидания.

close_needed
:   Для клиентов не используется.

ptr
:   Адрес внутреннего объекта этого соединения.

link
:   Адрес серверного соединения, связанного с клиентом.

remote_pid
:   Идентификатор процесса, если клиент подключается через Unix-сокет и
    операционная система поддерживает его получение.

tls
:   Строка со сведениями о соединении TLS либо пустая строка, если TLS не используется.

application_name
:   Строка со значением `application_name`, заданным клиентом для этого
    соединения, либо пустая строка, если значение не задано.

prepared_statements
:  Число подготовленных клиентом операторов.

id
:   Уникальный идентификатор клиента.

#### SHOW POOLS {#show-pools}

Для каждой пары (база данных, пользователь) создаётся отдельная запись пула.

database
:   Имя базы данных.

user
:   Имя пользователя.

cl_active
:   Клиентские соединения, связанные с серверными, либо неактивные клиентские
    соединения без запросов, ожидающих обработки.

cl_waiting
:   Клиентские соединения, отправившие запросы, но ещё не получившие серверного соединения.

cl_active_cancel_req
:   Клиентские соединения, передавшие серверу запросы отмены и ожидающие ответа сервера.

cl_waiting_cancel_req
:   Клиентские соединения, которые ещё не передали серверу запросы отмены.

sv_active
:   Серверные соединения, связанные с клиентом.

sv_active_cancel
:   Серверные соединения, которые сейчас передают запрос отмены.

sv_being_canceled
:   Серверы, которые обычно могли бы перейти в состояние ожидания, но ждут
    завершения всех выполняющихся запросов отмены, отправленных для отмены
    запроса на этом сервере.

sv_idle
:   Неиспользуемые серверные соединения, немедленно доступные для клиентских запросов.

sv_used
:   Серверные соединения, остававшиеся неактивными дольше `server_check_delay`;
    перед повторным использованием на них необходимо выполнить `server_check_query`.

sv_tested
:   Серверные соединения, на которых сейчас выполняется `server_reset_query`
    или `server_check_query`.

sv_login
:   Серверные соединения, в которых сейчас выполняется вход.

maxwait
:   Время ожидания первого, самого старого клиента в очереди, в секундах.
    Рост этого значения означает, что текущий пул серверов обрабатывает запросы
    недостаточно быстро. Причиной может быть перегруженный сервер или слишком
    малое значение **pool_size**.

maxwait_us
:   Микросекундная часть максимального времени ожидания.

pool_mode
:   Используемый режим пула.

load_balance_hosts
:   Используемое значение load_balance_hosts, если узел пула содержит список через запятую.

#### SHOW PEER_POOLS {#show-peer_pools}

Для каждого настроенного однорангового узла создаётся отдельная запись peer_pool.

database
:   Идентификатор настроенной записи peer.

cl_active_cancel_req
:   Клиентские соединения, передавшие серверу запросы отмены и ожидающие ответа сервера.

cl_waiting_cancel_req
:   Клиентские соединения, которые ещё не передали серверу запросы отмены.

sv_active_cancel
:   Серверные соединения, которые сейчас передают запрос отмены.

sv_login
:   Серверные соединения, в которых сейчас выполняется вход.

#### SHOW LISTS {#show-lists}

Показывает следующие внутренние сведения в столбцах, а не в строках:

databases
:   Число баз данных.

users
:   Число пользователей.

pools
:   Число пулов.

free_clients
:   Число свободных клиентов. Эти клиенты отключены, но PgBouncer сохраняет
    выделенную для них память, чтобы повторно использовать её для будущих
    клиентов и избежать новых выделений.

used_clients
:   Число используемых клиентов.

login_clients
:   Число клиентов в состоянии **login**.

free_servers
:   Число свободных серверов. Эти серверы отключены, но PgBouncer сохраняет
    выделенную для них память, чтобы повторно использовать её для будущих
    серверов и избежать новых выделений.

used_servers
:   Число используемых серверов.

dns_names
:   Число имён DNS в кэше.

dns_zones
:   Число зон DNS в кэше.

dns_queries
:   Число выполняющихся запросов DNS.

dns_pending
:   Не используется.

#### SHOW USERS {#show-users}

name
:   Имя пользователя.

pool_size
:   Переопределённое пользователем значение pool_size либо NULL, если оно не задано.

reserve_pool_size
:   Переопределённое пользователем значение reserve_pool_size либо NULL, если оно не задано.

pool_mode
:   Переопределённое пользователем значение pool_mode либо NULL, если оно не задано.

max_user_connections
:   Значение max_user_connections пользователя. Если оно не задано для этого
    пользователя, отображается значение по умолчанию.

current_connections
:   Текущее число серверных соединений этого пользователя со всеми серверами.

max_user_client_connections
:   Значение max_user_client_connections пользователя. Если оно не задано для
    этого пользователя, отображается значение по умолчанию.

current_client_connections
:   Текущее число клиентских соединений этого пользователя с PgBouncer.

#### SHOW DATABASES {#show-databases}

name
:   Имя настроенной записи базы данных.

host
:   Узел, к которому подключается PgBouncer.

port
:   Порт, к которому подключается PgBouncer.

database
:   Фактическое имя базы данных, к которой подключается PgBouncer.

force_user
:   Если пользователь входит в строку соединения, соединение между PgBouncer
    и PostgreSQL принудительно устанавливается от указанного пользователя
    независимо от пользователя клиента.

pool_size
:   Максимальное число серверных соединений.

min_pool_size
:   Минимальное число серверных соединений.

reserve_pool_size
:   Максимальное число дополнительных соединений для этой базы данных.

server_lifetime
:   Максимальное время существования серверного соединения для этой базы данных.

pool_mode
:   Переопределённое базой данных значение pool_mode либо NULL, если используется значение по умолчанию.

load_balance_hosts
:   Значение load_balance_hosts базы данных, если узел содержит список через запятую.

max_connections
:   Максимальное разрешённое число серверных соединений для этой базы данных,
    заданное **max_db_connections** глобально или для конкретной базы.

current_connections
:   Текущее число серверных соединений для этой базы данных.

max_client_connections
:   Максимальное разрешённое число клиентских соединений для этого экземпляра
    PgBouncer, заданное max_db_client_connections для базы данных.

current_client_connections
:   Текущее число клиентских соединений для этой базы данных.

paused
:   1, если база данных сейчас приостановлена, иначе 0.

disabled
:   1, если база данных сейчас отключена, иначе 0.

#### SHOW PEERS {#show-peers}

peer_id
:   Идентификатор настроенной записи peer.

host
:   Узел, к которому подключается PgBouncer.

port
:   Порт, к которому подключается PgBouncer.

pool_size
:   Максимальное число серверных соединений с этим одноранговым узлом.

#### SHOW FDS {#show-fds}

Внутренняя команда: показывает список используемых файловых дескрипторов
с привязанным к ним внутренним состоянием.

Если подключённый пользователь имеет имя «pgbouncer», подключается через
Unix-сокет и имеет тот же UID, что и работающий процесс, по соединению
передаются настоящие файловые дескрипторы. Этот механизм используется для
перезапуска без остановки обслуживания. Примечание: в Windows он не работает.

Эта команда также блокирует внутренний цикл событий, поэтому её не следует
использовать во время работы PgBouncer.

fd
:   Числовое значение файлового дескриптора.

task
:   Одно из значений: **pooler**, **client** или **server**.

user
:   Пользователь соединения, использующего файловый дескриптор.

database
:   База данных соединения, использующего файловый дескриптор.

addr
:   IP-адрес соединения, использующего файловый дескриптор, либо **unix** при
    использовании Unix-сокета.

port
:   Порт соединения, использующего файловый дескриптор.

cancel
:   Ключ отмены для этого соединения.

link
:   fd соответствующего сервера/клиента; NULL в состоянии ожидания.

#### SHOW SOCKETS, SHOW ACTIVE_SOCKETS {#show-sockets-show-active_sockets}

Показывает низкоуровневые сведения обо всех или только активных сокетах.
Включает сведения из **SHOW CLIENTS** и **SHOW SERVERS**, а также дополнительные
низкоуровневые данные.

#### SHOW CONFIG {#show-config}

Показывает текущие параметры конфигурации, по одному в строке, со следующими столбцами:

key
:   Имя переменной конфигурации.

value
:   Значение конфигурации.

default
:   Значение конфигурации по умолчанию.

changeable
:   **yes** или **no** — можно ли изменить переменную во время работы. При
    **no** переменная изменяется только при запуске. Для изменения во время
    работы используйте **SET**.

#### SHOW MEM {#show-mem}

Показывает низкоуровневые сведения о текущих размерах различных внутренних
областей выделенной памяти. Представленные сведения могут изменяться.

#### SHOW DNS_HOSTS {#show-dns_hosts}

Показывает имена узлов в кэше DNS.

hostname
:   Имя узла.

ttl
:   Число секунд до следующего поиска.

addrs
:   Список адресов через запятую.

#### SHOW DNS_ZONES {#show-dns_zones}

Показывает зоны DNS в кэше.

zonename
:   Имя зоны.

serial
:   Текущий серийный номер.

count
:   Имена узлов, принадлежащие этой зоне.


#### SHOW VERSION {#show-version}

Показывает строку версии PgBouncer.

#### SHOW STATE {#show-state}

Показывает параметры состояния PgBouncer. Текущие состояния: active, paused и suspended.

### Команды управления процессом {#process-controlling-commands}

#### PAUSE [db] {#pause-db}

PgBouncer пытается отключиться от всех серверов. Перед отключением каждого
серверного соединения PgBouncer ждёт его освобождения в соответствии с режимом
пула: в транзакционном режиме должна завершиться транзакция, в режиме на уровне
операторов — оператор, а в сеансовом режиме должен отключиться клиент. Команда
не завершится, пока не будут разорваны все серверные соединения. Используйте её
при перезапуске базы данных.

Если указано имя базы данных, приостанавливается только она.

Новые клиентские соединения с приостановленной базой данных будут ждать вызова **RESUME**.

#### DISABLE db {#disable-db}

Отклонить все новые клиентские соединения с указанной базой данных.

#### ENABLE db {#enable-db}

Разрешить новые клиентские соединения после предыдущей команды **DISABLE**.

#### RECONNECT [db] {#reconnect-db}

Закрыть каждое открытое серверное соединение указанной базы данных или всех
баз после его освобождения в соответствии с режимом пула, даже если срок его
существования ещё не истёк. Новые серверные соединения можно создавать сразу;
они будут устанавливаться по мере необходимости согласно параметрам размера пула.

Эта команда полезна при изменении настройки серверного соединения, например
для постепенного планового переключения на новый сервер. Выполнять её *не*
нужно, если строка соединения в pgbouncer.ini была изменена и перезагружена
(см. **RELOAD**) или изменилось разрешение DNS: в таких случаях эквивалентная
команда выполняется автоматически. Команда необходима только тогда, когда
соединения маршрутизирует компонент ниже PgBouncer.

После выполнения команды может долго сохраняться состояние, при котором часть
серверных соединений направляется к старому назначению, а часть — к новому.
Обычно это имеет смысл лишь при переключении трафика только для чтения между
репликами только для чтения или между узлами мультимастерной репликации. Если
все соединения необходимо переключить одновременно, рекомендуется **PAUSE**.
Для немедленного закрытия серверных соединений без ожидания, например при
аварийном, а не постепенном плановом переключении, рассмотрите **KILL**.

#### KILL [db] {#kill-db}

Немедленно разорвать все клиентские и серверные соединения с указанной базой
данных или со всеми базами, кроме административной.

Новые клиентские соединения с остановленной базой данных будут ждать вызова **RESUME**.

#### KILL_CLIENT id {#kill_client-id}

Немедленно закрыть указанное клиентское соединение и все серверные соединения
этого клиента. Клиент определяется по значению `id`, которое можно найти
командой `SHOW CLIENTS`.

Пример команды: `KILL_CLIENT 1234`.

#### SUSPEND {#suspend}

Все буферы сокетов сбрасываются, и PgBouncer прекращает принимать из них данные.
Команда не завершится, пока все буферы не опустеют. Используйте её при
перезапуске PgBouncer без остановки обслуживания.

Новые клиентские соединения с приостановленной базой данных будут ждать вызова **RESUME**.

#### RESUME [db] {#resume-db}

Возобновить работу после предыдущей команды **KILL**, **PAUSE** или **SUSPEND**.

#### SHUTDOWN {#shutdown}

Процесс PgBouncer завершится.

#### SHUTDOWN WAIT_FOR_SERVERS {#shutdown-wait_for_servers}

Прекратить принимать новые соединения и завершить работу после освобождения
всех серверов. По сути, это равнозначно выполнению **PAUSE** и **SHUTDOWN**, но
во время ожидания **PAUSE** также прекращается приём новых соединений и сразу
отключаются клиенты, ожидающие серверного соединения. Обратите внимание: во
время завершения работы UNIX-сокеты останутся открыты, но будут принимать только
подключения к административной консоли PgBouncer.

#### SHUTDOWN WAIT_FOR_CLIENTS {#shutdown-wait_for_clients}

Прекратить принимать новые соединения и завершить процесс после отключения всех
существующих клиентов. Обратите внимание: во время завершения работы UNIX-сокеты
останутся открыты, но будут принимать только подключения к административной
консоли PgBouncer. Эту команду можно использовать для поэтапного перезапуска
двух процессов PgBouncer без простоя по следующей процедуре:

1. Запустите два или более процессов PgBouncer на одном порту с использованием
   `so_reuseport` ([настройка одноранговых узлов](/ru/docs/pgbouncer/config/#section-peers)
   рекомендуется, но не обязательна). Для перезапуска без простоя процессы
   перезапускаются по одному: остальные продолжают принимать соединения, пока
   один процесс перезапускается.
2. Выберите первый процесс для перезапуска и назовите его A.
3. Выполните для процесса A `SHUTDOWN WAIT_FOR_CLIENTS` или отправьте `SIGTERM`.
4. Заставьте всех клиентов переподключиться. Можно дождаться, пока клиентский
   пул инициирует переподключение из-за `server_idle_timeout` или аналогичного
   параметра. Если клиентский пул не используется, можно перезапустить клиентов.
   После переподключения всех клиентов процесс A завершится автоматически,
   поскольку к нему больше никто не подключён.
5. Снова запустите процесс A.
6. Повторите шаги 3, 4 и 5 по очереди для каждого оставшегося процесса, пока
   не перезапустите их все.


#### RELOAD {#reload}

Процесс PgBouncer перезагрузит файлы конфигурации и обновит изменяемые параметры.
Это относится к основному файлу конфигурации, а также к файлам, указанным
параметрами `auth_file` и `auth_hba_file`.

PgBouncer обнаруживает изменение параметров соединения в определении базы данных
после перезагрузки файла конфигурации. Существующее серверное соединение со
старым назначением закроется при следующем освобождении согласно режиму пула,
а новые серверные соединения сразу будут использовать обновлённые параметры.

#### WAIT_CLOSE [db] {#wait_close-db}

Ждать, пока все серверные соединения указанной базы данных или всех баз не
выйдут из состояния "close_needed" (см. **SHOW SERVERS**). Команду можно вызвать
после **RECONNECT** или **RELOAD**, чтобы дождаться полного применения
соответствующего изменения конфигурации, например в сценариях планового переключения.

### Другие команды {#other-commands}

#### SET key = arg {#set-key--arg}

Изменяет параметр конфигурации (см. также **SHOW CONFIG**). Например:

    SET log_connections = 1;
    SET server_check_query = 'select 2';

(Обратите внимание: эта команда выполняется в административной консоли
PgBouncer и задаёт параметры PgBouncer. Команда **SET**, выполненная в другой
базе данных, передаётся бэкенду PostgreSQL как любая другая команда SQL.)

### Сигналы {#signals}

SIGHUP
:   Перезагрузить конфигурацию. Равнозначно команде **RELOAD** в консоли.

SIGTERM
:   Сверхбезопасное завершение работы. Дождаться отключения всех существующих
    клиентов, не принимая новые соединения. Равнозначно команде
    **SHUTDOWN WAIT_FOR_CLIENTS** в консоли. Если сигнал получен во время уже
    выполняющегося завершения работы, вместо «сверхбезопасного завершения»
    запускается «немедленное завершение». В версиях PgBouncer до 1.23.0 этот
    сигнал вызывал «немедленное завершение».

SIGINT
:   Безопасное завершение работы. Равнозначно команде
    **SHUTDOWN WAIT_FOR_SERVERS** в консоли. Если сигнал получен во время уже
    выполняющегося завершения, вместо «безопасного завершения» запускается
    «немедленное завершение».

SIGQUIT
:   Немедленное завершение работы. Равнозначно команде **SHUTDOWN** в консоли.

SIGUSR1
:   Равнозначно команде **PAUSE** в консоли.

SIGUSR2
:   Равнозначно команде **RESUME** в консоли.

### Параметры Libevent {#libevent-settings}

Из документации Libevent:

> Поддержку epoll, kqueue, devpoll, poll или select можно отключить,
> задав переменную окружения EVENT_NOEPOLL,
> EVENT_NOKQUEUE, EVENT_NODEVPOLL, EVENT_NOPOLL или EVENT_NOSELECT,
> соответственно.
>
> Если задать переменную окружения EVENT_SHOW_METHOD, libevent выведет
> используемый метод уведомлений ядра.

--------

## См. также {#see-also}

pgbouncer(5) — страница man с описанием параметров конфигурации.

<https://www.pgbouncer.org/>

---

Обратные ссылки:

- [FAQ](/ru/docs/pgbouncer/faq/)
