pgbouncer-admin

pgbouncer-admin

PgBouncer管理控制台命令

概要

psql -p port pgbouncer

描述

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

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

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

选项

-p port
PgBouncer端口号。

命令行语法

pgbouncer=# SHOW help;
NOTICE:  Console usage
DETAIL:  
    SHOW HELP|CONFIG|DATABASES|POOLS|CLIENTS|SERVERS|VERSION
    SHOW FDS|SOCKETS|ACTIVE_SOCKETS|LISTS|MEM
    SHOW DNS_HOSTS|DNS_ZONES
    SHOW STATS|STATS_TOTALS|STATS_AVERAGES
    SET key = arg
    RELOAD
    PAUSE [<db>]
    RESUME [<db>]
    DISABLE <db>
    ENABLE <db>
    KILL <db>
    SUSPEND
    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. 活动套接字信息
列 描述
type S为服务器,C为客户端。
user pgbouncer使用该用户名连接到服务器。
database 数据库名字。
state 服务器连接的状态,处于active状态、used 状态或idle状态。
addr PostgreSQL服务器的IP地址。
port PostgreSQL 服务器端口。
local_addr 本地机器上的连接起始地址。
local_port 本地机器上的连接起始端口。
connect_time 连接建立的时间。
request_time 最后一次发出请求的时间。
wait 等待时间。
wait_us 等待时间。(微秒)
ptr 该连接的内部对象的地址。用作唯一的ID。
link 服务器和客户端匹配的地址。
remote_pid 后台服务进程的定位符。
tls TLS文本。
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. 客户端
列 描述
type C为客户端。
user 客户端连接的用户。
database 数据库名字。
state 客户端连接状态,状态可以为active、 used、waiting或 idle。
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 配置值
changeable yes或no。 显示变量在运行时是否可以改变。如果为no,则该变量只能在启动时改变。

DATABASES

Table 4. 数据库
列 描述
name 配置好的数据库项的名字
host pgbouncer连接到的主机。
port pgbouncer连接到的端口
database pgbouncer连接到的实际数据库名称。
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 任务为以下之一pooler、client或 server。
user 使用文件描述符的连接的用户。
database 使用文件描述符的连接的数据库。
addr 使用文件描述符的连接的IP地址,如果使用Unix套接字,则为“unix”。
port 使用文件描述符的连接使用的端口。
cancel 该连接的取消键。
link 相应的服务器/客户端的文件描述符。空闲时为NULL。
client_encoding 数据库使用的字符集。
std_strings 这将控制普通字符串('...')是否按照SQL标准中的规定按字面意思处理反斜线。
datestyle 显示日期和时间值的格式。
timezone 用于解释和显示时间戳的时区。
password auth_user的密码。

LISTS

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

Table 8. PgBouncer项的计数
条目 描述
databases 数据库的计数。
users 用户的计数。
pools 池的计数。
free_clients 空闲客户端的计数。
used_clients 在用客户端的计数。
login_clients 处于login状态的客户端计数。
free_servers 空闲服务器的计数。
used_servers 在用服务器的计数。
dns_names DNS名字的计数。
dns_zones DNS区域的计数。
dns_queries DNS查询的计数。
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_query或 server_check_query的服务器连接。
sv_login 目前正在登陆的服务器连接。
maxwait 队列中第一个(最老的)客户端等待了多长时间,以秒为单位。 如果这个开始增加, 那么当前的服务器池不能足够快地处理请求。 原因可能是服务器超载或pool_size设置太小。
maxwait_us max_wait(微秒)。
pool_mode 正在使用的池模式。

SERVERS

Table 11. 服务器
列 描述
type S,为服务器。
user pgbouncer用来连接到服务器的用户ID。
database 数据库名。
state pgbouncer服务器连接的状态,可以是active、 used或idle。
addr Greenplum或PostgreSQL服务器的IP地址。
port Greenplum或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,则它是一个随机数。
tls TLS内容。

STATS

显示统计数据。

Table 12. 统计
列 描述
database 为每个数据库呈现的统计信息。
total_xact_count PgBouncer池化的SQL事务总数。
total_query_count PgBouncer池化的SQL查询总数。
total_received pgbouncer收到的网络流量的总字节数。
total_sent pgbouncer发送的网络流量的总字节数。
total_xact_time 一个事务中,通过PgBouncer连接到Greenplum数据库的微秒数,包括idle事务和执行查询。
total_query_time 当主动连接到数据库服务器时,pgbouncer花费的总微秒数。
total_wait_time 客户端等待服务器的时间(微秒)。
avg_xact_count PgBouncer池化的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文档。