跳转到主要内容

pg_stat_tcpinfo

Linux TCP 连接统计、延迟与重传观测

概览

扩展包名版本分类许可证语言
pg_stat_tcpinfo1.1STATPostgreSQLC
ID扩展名BinLibLoadCreateTrustReloc模式
6480pg_stat_tcpinfo否是否是否是-

Linux >=4.18; procfs and NETLINK_INET_DIAG required. Monitoring roles can see all server-OS-user sockets. No preload or upstream 1.0-to-1.1 upgrade script. PG14-18; PGDG remains principal supplier; PGSTY 1.1 batch supplements published.

版本

类型仓库版本PG 大版本包名依赖
EXTPGDG1.11817161514pg_stat_tcpinfo-
RPMPGDG1.11817161514pg_stat_tcpinfo_$v-
DEBPGDG1.11817161514postgresql-$v-pg-stat-tcpinfo-
OS / PGPG18PG17PG16PG15PG14
el8.x86_64
el8.aarch64
el9.x86_64
el9.aarch64
el10.x86_64
PIGSTY 1.1
PIGSTY 1.1
PIGSTY 1.1
PIGSTY 1.1
PIGSTY 1.1
el10.aarch64
d12.x86_64
d12.aarch64
d13.x86_64
d13.aarch64
u22.x86_64
u22.aarch64
u24.x86_64
u24.aarch64
u26.x86_64
u26.aarch64

构建

您可以使用 pig build 命令构建 pg_stat_tcpinfo 扩展的 RPM / DEB 包:

pig build pkg pg_stat_tcpinfo         # 构建 RPM / DEB 包

安装

您可以直接安装 pg_stat_tcpinfo 扩展包的预置二进制包,首先确保 PGDG 仓库已经添加并启用:

pig repo add pgdg -u          # 添加 PGDG 仓库并更新缓存

使用 pig 或者是 apt/yum/dnf 安装扩展:

安装
pig install pg_stat_tcpinfo;          # 当前活跃 PG 版本安装
pig
pig ext install -y pg_stat_tcpinfo -v 18  # PG 18
pig ext install -y pg_stat_tcpinfo -v 17  # PG 17
pig ext install -y pg_stat_tcpinfo -v 16  # PG 16
pig ext install -y pg_stat_tcpinfo -v 15  # PG 15
pig ext install -y pg_stat_tcpinfo -v 14  # PG 14
dnf
dnf install -y pg_stat_tcpinfo_18       # PG 18
dnf install -y pg_stat_tcpinfo_17       # PG 17
dnf install -y pg_stat_tcpinfo_16       # PG 16
dnf install -y pg_stat_tcpinfo_15       # PG 15
dnf install -y pg_stat_tcpinfo_14       # PG 14
apt
apt install -y postgresql-18-pg-stat-tcpinfo   # PG 18
apt install -y postgresql-17-pg-stat-tcpinfo   # PG 17
apt install -y postgresql-16-pg-stat-tcpinfo   # PG 16
apt install -y postgresql-15-pg-stat-tcpinfo   # PG 15
apt install -y postgresql-14-pg-stat-tcpinfo   # PG 14

创建扩展:

CREATE EXTENSION pg_stat_tcpinfo;

用法

来源:

pg_stat_tcpinfo 1.1 通过 SQL 提供 Linux TCP 套接字统计,利用往返延迟、重传次数、拥塞控制和队列大小,帮助排查缓慢的客户端连接、复制链路与外部服务器连接,无需登录主机 Shell。

扩展要求 Linux 4.18 或更新版本,能够访问 /proc 和 NETLINK_INET_DIAG 接口。须由超级用户安装,无需预加载或重启数据库。

核心用法

CREATE EXTENSION pg_stat_tcpinfo;

SELECT a.pid, a.usename, a.application_name,
       t.dst_addr, t.dst_port, t.state, t.recvq, t.sendq,
       t.tcpinfo->>'rtt' AS rtt_ms,
       t.tcpinfo->>'total_retrans' AS retransmissions,
       t.tcpinfo->>'congestion' AS congestion_control
FROM pg_stat_activity a
JOIN pg_stat_tcpinfo t ON t.pid = a.pid
WHERE t.state = 'ESTABLISHED';

对象与指标

pg_stat_tcpinfo 视图调用 pg_stat_get_tcpinfo()。每行包含进程与操作系统用户 ID、本地和远端地址及端口、连接状态、收发队列,以及 tcpinfo JSONB 对象。支持 IPv4 和 IPv6 套接字;rtt 以毫秒为单位,total_retrans 为累计重传计数。

视图包含数据库服务端操作系统用户拥有的全部 TCP 套接字,也可能包含同一账号下其他数据库集群或程序的连接。按后端 PID 关联可将结果缩小到当前集群可见的连接。Unix 域连接不属于 TCP 套接字,不会显示;TIME-WAIT 套接字没有属主,也会被排除。旧内核不支持的指标可能为空。

权限

安装脚本撤销函数的公共执行权限,并将函数和视图访问权授予 pg_read_all_stats,pg_monitor 继承这些权限。普通应用角色默认不能读取指标。额外授权会暴露服务端操作系统用户的全部套接字,并不限于调用者自己的数据库连接。

运行边界

每次调用都会扫描进程描述符并查询内核,提供当前状态,不保存历史采样。容器的 PID、网络命名空间和 procfs 访问限制决定可见的套接字与进程。应根据进程和连接数量选择采样间隔。

使用与服务端 PostgreSQL 主版本匹配的软件包。1.1 版本包含 1.0 和 1.1 的新安装 SQL,但未提供两者之间的升级脚本,因此现有 1.0 安装没有上游提供的 ALTER EXTENSION pg_stat_tcpinfo UPDATE 升级路径。

这个页面对您有帮助吗?