pgbouncer-admin

PgBouncer管理控制台命令

概要

  1. psql -p port pgbouncer

描述

PgBouncer管理控制台可以通过psql操作。 通过连接到PgBouncer port和 虚拟数据库名pgbouncer来登陆控制台。

列在pgbouncer.ini配置文件中的配置参数admin_users 和stats_users的用户有访问PgBouncer管理控制台的权限。

可以从控制台控制PgBouncer和Greenplum数据库之间的连接。 也可以进行PgBouncer配置参数设置。

选项

-p port

PgBouncer端口号。

命令行语法

  1. pgbouncer=# SHOW help;
  2. NOTICE: Console usage
  3. DETAIL:
  4. SHOW HELP|CONFIG|DATABASES|POOLS|CLIENTS|SERVERS|VERSION
  5. SHOW FDS|SOCKETS|ACTIVE_SOCKETS|LISTS|MEM
  6. SHOW DNS_HOSTS|DNS_ZONES
  7. SHOW STATS|STATS_TOTALS|STATS_AVERAGES
  8. SET key = arg
  9. RELOAD
  10. PAUSE [<db>]
  11. RESUME [<db>]
  12. DISABLE <db>
  13. ENABLE <db>
  14. KILL <db>
  15. SUSPEND
  16. SHUTDOWN

管理命令

以下PgBouncer管理命令控制pgbouncer进程。

PAUSE [db]

如果没有指定数据库,PgBouncer将尝试从所有服务器断开连接,首先等待所有查询完成。 在所有查询完成之前,该命令不会返回。这个命令是用来准备重启数据库的。

如果指定了数据库名称,则只有该数据库被暂停。

如果运行一个PAUSE db数据库命令, 然后运行PAUSE命令暂停所有数据库,则必须执行两个RESUME命令, 一个用于所有数据库,一个用于指定的数据库。

SUSPEND

所有套接字缓冲区都被刷新,PgBouncer停止监听数据。在所有缓冲区为空之前, 该命令不会返回。 在线重新启动PgBouncer时使用。

RESUME [ db ]

从之前的PAUSE或者SUSPEND命令恢复工作。

如果用PAUSE命令指定了数据库,则还必须使用RESUME命令指定数据库。

使用PAUSE命令暂停所有数据库之后,不支持使用 RESUME db恢复单个数据库。

DISABLE db

拒绝数据库上的所有新客户端连接。

ENABLE db

在数据库上允许新的客户端连接。

KILL db

立即删除所有的客户端和服务器到指定数据库的连接。

SHUTDOWN

停止PgBouncer进程。从psql命令会话中退出,请输入\q。

RELOAD

TPgBouncer进程重新加载当前的配置文件并更新可更改的设置。

SET key = value

覆盖指定的配置设置。请参见SHOW CONFIG;命令。

SHOW命令

SHOW category命令显示不同类型的PgBouncer信息。 用户可以指定以下类别之一:

ACTIVE_SOCKETS

Table 1. 活动套接字信息
描述
typeS为服务器,C为客户端。
userpgbouncer使用该用户名连接到服务器。
database数据库名字。
state服务器连接的状态,处于active状态、used 状态或idle状态。
addrPostgreSQL服务器的IP地址。
portPostgreSQL 服务器端口。
local_addr本地机器上的连接起始地址。
local_port本地机器上的连接起始端口。
connect_time连接建立的时间。
request_time最后一次发出请求的时间。
wait等待时间。
wait_us等待时间。(微秒)
ptr该连接的内部对象的地址。用作唯一的ID。
link服务器和客户端匹配的地址。
remote_pid后台服务进程的定位符。
tlsTLS文本。
recv_pos在I/O缓冲区中的接收位置。
pkt_pos在I/O 缓冲区中的解析位置。
pkt_remain套接字上剩余的包数量。
send_pos包中的发送位置。
send_remain剩余要发送的包的总长度。
pkt_avail剩余要解析的I/O缓冲区量。
send_avail剩余要发送的I/O缓冲区量。

CLIENTS

Table 2. 客户端
描述
typeC为客户端。
user客户端连接的用户。
database数据库名字。
state客户端连接状态,状态可以为activeusedwaitingidle
addr客户端的IP地址,或套接字连接的unix域。
port客户端连接的端口。
local_addr本地机器上的连接结束地址。
local_port本地机器上的连接结束端口。
connect_time连接时间的时间戳。
request_time上次客户端请求的时间戳。
wait等待时间。
wait_us等待时间。(微秒)
ptr该连接的内部对象的地址。用作唯一的ID。
link客户端与服务器连接的地址。
remote_pid进程ID,如果客户端连接到Unix套接字,并且操作系统支持获取它。
tls客户端TLS内容。

CONFIG

当前PgBouncer参数设置的列表。

Table 3. 配置
描述
key配置变量名
value配置值
changeableyesno。 显示变量在运行时是否可以改变。如果为no,则该变量只能在启动时改变。

DATABASES

Table 4. 数据库
描述
name配置好的数据库项的名字
hostpgbouncer连接到的主机。
portpgbouncer连接到的端口
databasepgbouncer连接到的实际数据库名称。
force_user当用户是连接字符串的一部分时,pgbouncer和数据库服务器之间的连接被强制为给定的用户, 无论用什么客户端用户都是这样。
pool_size服务器连接的最大数量。
reserve_pool如果池达到pool_size,可以创建的额外连接数。
pool_mode数据库的覆盖pool_mode,或者NULL使用默认值。
max_connections此数据库的所有池的最大连接数。
current_connections此数据库的所有池的连接总数。
paused数据库的停顿/非停顿状态。
disabled数据库的启用/停用状态。

DNS_HOSTS

Table 5. DNS主机
描述
hostname主机名
ttl下次查询间隔多少秒。
addrs逗号分隔的地址列表。

DNS_ZONES

Table 6. 缓冲中的DNS区域
描述
zonename区域名字
serial当前DNS序列号
count属于该区域的主机名。

FDS

SHOW FDS是用于联机重启的内部命令,例如升级到新的PgBouncer版本时。 它显示正在使用的文件描述符列表以及附加其上的内部状态。这个命令阻塞内部事件循环, 因此在PGBouncer被使用的时候不应该使用它。

当连接的用户拥有用户名“pgbouncer”,通过一个Unix套接字连接,并具有与正在运行的 进程相同的UID时,实际的文件描述符将通过连接传递。

Table 7. FDS
描述
fd文件描述符的数值。
task任务为以下之一poolerclientserver
user使用文件描述符的连接的用户。
database使用文件描述符的连接的数据库。
addr使用文件描述符的连接的IP地址,如果使用Unix套接字,则为“unix”。
port使用文件描述符的连接使用的端口。
cancel该连接的取消键。
link相应的服务器/客户端的文件描述符。空闲时为NULL。
client_encoding数据库使用的字符集。
std_strings这将控制普通字符串(’…’)是否按照SQL标准中的规定按字面意思处理反斜线。
datestyle显示日期和时间值的格式。
timezone用于解释和显示时间戳的时区。
passwordauth_user的密码。

LISTS

在两列中显示以下PgBouncer统计信息:项标签和值。

Table 8. PgBouncer项的计数
条目描述
databases数据库的计数。
users用户的计数。
pools池的计数。
free_clients空闲客户端的计数。
used_clients在用客户端的计数。
login_clients处于login状态的客户端计数。
free_servers空闲服务器的计数。
used_servers在用服务器的计数。
dns_namesDNS名字的计数。
dns_zonesDNS区域的计数。
dns_queriesDNS查询的计数。
dns_pending正在进行的DNS查询的计数。

MEM

显示这些PgBouncer缓存的缓存内存信息:

  • user_cache
  • db_cache
  • pool_cache
  • server_cache
  • client_cache
  • iobuf_cache
Table 9. 内存缓存
描述
name缓存的名字。
size缓存中单个缓存槽的大小。
used缓存中在用的插槽数量。
free缓存中可用插槽的数量。
memtotal缓存使用的总字节数。

POOLS

为每对(数据库,用户)创建一个新的池项。

Table 10. 池
描述
database数据库名字。
user用户名。
cl_active链接到服务器并且可以处理查询的客户端连接。
cl_waiting已发送查询但尚未获得服务器连接的客户端连接。
sv_active链接到客户端的服务器连接。
sv_idle还没有使用且可立即用于客户端查询的服务器连接。
sv_used空闲时间已经超过server_check_delay的服务器连接。 在它们被使用前,必须先运行server_check_query
sv_tested当前正在运行server_reset_queryserver_check_query的服务器连接。
sv_login目前正在登陆的服务器连接。
maxwait队列中第一个(最老的)客户端等待了多长时间,以秒为单位。 如果这个开始增加, 那么当前的服务器池不能足够快地处理请求。 原因可能是服务器超载或pool_size设置太小。
maxwait_usmax_wait(微秒)。
pool_mode正在使用的池模式。

SERVERS

Table 11. 服务器
描述
typeS,为服务器。
userpgbouncer用来连接到服务器的用户ID。
database数据库名。
statepgbouncer服务器连接的状态,可以是activeusedidle
addrGreenplum或PostgreSQL服务器的IP地址。
portGreenplum或PostgreSQL服务器的端口。
local_addr本地机器上的连接开始地址。
local_port本地机器上的连接开始端口。
connect_time连接建立的时间。
request_time最后一次请求发送的时间。
wait等待时间。
wait_us等待时间。(微秒)
ptr此连接的内部对象的地址。用作唯一的ID。
link与服务器配对的客户端连接的地址。
remote_pid后端服务器进程的PID。如果连接是通过Unix套接字进行的, 并且操作系统支持获取进程ID信息,则它是OS的pid。否则,它将从 服务器发送的取消包中提取出来,在服务器是PostgreSQL的情况下应该是PID, 但是如果服务器是另一个PgBouncer,则它是一个随机数。
tlsTLS内容。

STATS

显示统计数据。

Table 12. 统计
描述
database为每个数据库呈现的统计信息。
total_xact_countPgBouncer池化的SQL事务总数。
total_query_countPgBouncer池化的SQL查询总数。
total_receivedpgbouncer收到的网络流量的总字节数。
total_sentpgbouncer发送的网络流量的总字节数。
total_xact_time一个事务中,通过PgBouncer连接到Greenplum数据库的微秒数,包括idle事务和执行查询。
total_query_time当主动连接到数据库服务器时,pgbouncer花费的总微秒数。
total_wait_time客户端等待服务器的时间(微秒)。
avg_xact_countPgBouncer池化的SQL事务平均数量。
avg_query_count最后一个统计周期的每秒平均查询数。
avg_recv每秒平均收到(来自客户端)的字节数。
avg_sent每秒平均发送(到客户端)的字节数。
avg_xact_time平均事务时长(微秒)。
avg_query_time平均查询时长(微秒)。
avg_wait_time平均等待时长(微秒)。

STATS_AVERAGES

SHOW STATS的子集,展示已选择的统计信息的平均值。

STATS_TOTALS

SHOW STATS的子集,展示已选择的统计信息的总值。

USERS

Table 13. 用户
描述
name用户名。
pool_mode用户的覆盖pool_mode,如果将使用默认值,则为NULL。

VERSION

显示PgBouncer版本的信息

Note: 该参考文档基于PgBouncer 1.8.1文档。

另见

pgbouncerpgbouncer.ini