Ubuntu中监控PostgreSQL性能的方法与工具
1. 使用PostgreSQL内置视图监控核心指标
PostgreSQL提供了多个系统视图,可直接查询数据库的实时性能数据,覆盖连接、查询、表/索引等多个维度:
- pg_stat_activity:查看当前活动连接及查询(如
state、query、query_start字段),识别长时间运行的查询或闲置连接; - pg_stat_statements:需提前启用(
CREATE EXTENSION pg_stat_statements;),统计查询的执行次数、总时间、平均时间、调用计划等,是查询性能分析的关键工具; - pg_stat_bgwriter:监控后台写进程的性能(如
buffers_written、buffers_backend_fsync),反映WAL(预写日志)写入和检查点的情况; - pg_stat_database:查看每个数据库的连接数、查询总数、磁盘读取/写入量等,快速定位高负载数据库;
- pg_stat_user_tables/pg_stat_user_indexes:分别监控用户表的读写操作(如
seq_scan、n_tup_ins)和索引使用情况(如idx_scan、n_tup_upd),识别未合理使用的索引。
2. 终端实时监控工具
pg_activity
- 功能:类似Unix
top命令的交互式工具,实时显示PostgreSQL的活动会话、查询、锁、CPU/内存使用等信息,支持按CPU、内存、运行时间排序,快速定位资源消耗高的会话; - 安装与使用:在Ubuntu上通过
sudo apt install pg-activity安装,运行pg_activity即可启动,默认连接localhost:5432/postgres,可通过-U(用户名)、-d(数据库)参数指定连接信息。
pg_top
- 功能:实时监控PostgreSQL实例的资源使用(CPU、内存、I/O)和活动会话,显示锁等待、查询缓存命中率、表/索引统计信息,支持按用户、数据库过滤;
- 安装与使用:通过
sudo apt-get install pg-top安装,运行pg_top进入交互界面,使用c(按CPU排序)、m(按内存排序)、u(按用户过滤)等快捷键调整显示内容。
3. 图形化管理工具
pgAdmin
- 功能:PostgreSQL的官方图形化管理工具,提供“Monitor”模块(实时监控CPU、磁盘I/O、连接数等)、“Statistics”(查看表/索引的行数、大小、索引使用情况)、“Query Tool”(执行SQL并通过
EXPLAIN ANALYZE分析查询计划)等功能; - 使用步骤:在Ubuntu上安装pgAdmin后,通过浏览器访问其Web界面,选择目标数据库,点击顶部菜单栏的“Tools”→“Monitor”启动监控,或右击数据库/表对象选择“Statistics”查看详情。
第三方APM工具(如Signoz)
- 功能:开源的应用程序性能管理(APM)平台,支持PostgreSQL的性能监控、分布式追踪、日志分析,提供友好的用户界面和强大的过滤/聚合功能;
- 部署与使用:克隆Signoz仓库到Ubuntu服务器,运行安装脚本完成部署,配置PostgreSQL数据源后,即可查看数据库的性能指标(如查询延迟、错误率、慢查询)和追踪信息。
4. 系统级性能工具
结合Ubuntu系统自带的工具,可监控PostgreSQL进程的整体资源占用:
- top/htop:实时查看系统进程的CPU、内存使用情况,通过
grep postgres过滤出PostgreSQL进程,快速定位资源占用高的进程; - vmstat/vmstat 1:每秒刷新系统级性能数据(如CPU使用率、内存交换、磁盘I/O、进程队列),反映PostgreSQL对系统资源的整体影响;
- dstat:综合监控CPU、内存、磁盘、网络等指标,通过
dstat -cdngy查看实时数据,辅助分析PostgreSQL的性能瓶颈; - sysstat:收集系统历史性能数据(如
iostat、sar),通过 sar -u 1 5查看CPU使用率的历史趋势,用于长期性能分析和故障复盘。