深入解析pg_activity:PostgreSQL实时监控利器
工具概述
pg_activity是一款专为PostgreSQL设计的命令行实时监控工具,它能够帮助数据库管理员直观地了解数据库服务器的运行状态。该工具需要运行在与PostgreSQL实例相同的服务器上,并且需要以运行实例的用户(或root)身份执行,才能显示CPU、内存、读写等系统信息。
核心功能界面解析
头部信息区
头部信息区分为三个主要部分,每个部分都提供了关键的监控指标:
1. 实例信息组(按I键切换显示)
全局信息:
- 实例运行时间
- 数据库总大小(可过滤)
- 数据库增长速率(B/s,可过滤)
- 缓存命中率(自上次快照以来)
会话信息:
- 总会话数/最大连接数(可过滤)
- 活动会话数(可过滤)
- 空闲会话数(可过滤)
- 事务中空闲会话数(可过滤)
- 事务中止空闲会话数(可过滤)
- 等待锁的会话数(可过滤)
活动信息:
- 每秒事务数(TPS,可过滤)
- 每秒插入/更新/删除操作数(可过滤)
- 每秒返回元组数(可过滤)
- 临时文件数量和总大小
2. 工作进程组
工作进程:
- 总工作进程数/最大工作槽数(可过滤)
- 逻辑复制工作进程数/最大值(可过滤)
- 并行工作进程数/最大值(可过滤)
其他进程信息:
- 自动清理工作进程数/最大值(可过滤)
- WAL发送进程数/最大值(可过滤)
- WAL接收进程数/最大值(可过滤)
- 复制槽数量/最大值(可过滤)
3. 系统信息组
- 内存使用情况(总量/空闲/已用/缓冲+缓存)
- 交换空间使用情况
- IO操作(每秒IO数,当前读写吞吐量)
- CPU负载(1/5/15分钟平均值)
运行查询面板
显示持续时间超过设定阈值(默认通过--min-duration参数设置)的所有运行查询、事务或后端连接(取决于DURATION_MODE设置),包含以下信息列:
- 进程ID(PID)
- XMIN事务ID
- 数据库名称
- 应用名称
- 用户名
- 客户端地址
- CPU使用率(%)
- 内存使用率(%)
- 读写吞吐量(B/s)
- 持续时间
- 等待状态(锁或特定事件)
- IO等待状态
- 后端状态
- 查询语句
等待查询面板
专门显示正在等待锁的查询,包含以下信息:
- 进程ID(PID)
- 数据库名称
- 应用名称
- 用户名
- 客户端地址
- 被锁关系名称
- 锁类型
- 锁模式
- 持续时间
- 事务状态
- 查询语句
阻塞查询面板
显示那些持有其他会话所需对象锁的查询,信息列与等待查询面板类似,额外包含等待状态信息。
实用命令行选项
配置选项
-P/--profile
:指定配置文件,支持自定义配置或内置配置方案
核心功能选项
--blocksize
:设置文件系统块大小(默认4096)--rds
:启用AWS RDS支持(自动禁用临时文件统计并过滤rdsadmin数据库)--output
:将运行查询导出为CSV文件--min-duration
:设置查询显示的最小持续时间阈值(秒)--filter
:按字段值过滤活动(支持正则表达式)
连接选项
-U/--username
:指定数据库用户名-p/--port
:指定数据库端口-h/--host
:指定数据库主机或socket目录-d/--dbname
:指定连接的数据库名
显示控制选项
--pid/--no-pid
:显示/隐藏进程ID列--xmin/--no-xmin
:显示/隐藏XMIN列--database/--no-database
:显示/隐藏数据库列-w/--wrap-query
:启用查询自动换行(默认截断)
技术要点解析
-
性能监控深度:pg_activity不仅提供常规的查询监控,还能展示系统级资源使用情况(CPU、内存、IO),为性能诊断提供全面数据。
-
锁分析能力:通过专门的等待和阻塞查询面板,DBA可以快速识别和解决锁竞争问题。
-
过滤功能:支持基于正则表达式的灵活过滤,特别适合在多数据库环境中聚焦特定问题。
-
AWS RDS支持:通过
--rds
选项优化了对云数据库的监控体验。 -
数据导出:CSV导出功能便于后续分析和报告生成。
最佳实践建议
-
对于大型生产环境,建议使用
--min-duration
过滤短时查询,聚焦性能问题。 -
当监控RDS实例时,务必使用
--rds
选项以获得准确统计。 -
使用
-w
选项处理长查询时,可保持查询语句的完整性。 -
定期使用CSV导出功能建立性能基线,便于历史对比分析。
-
结合过滤功能,可以创建针对特定应用或用户的监控视图。
pg_activity以其全面的监控维度和灵活的配置选项,成为PostgreSQL数据库管理员不可或缺的实时诊断工具。通过熟练掌握其各项功能,DBA能够快速定位和解决数据库性能问题,保障系统稳定运行。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考