postgresql|数据库|实时数据库监控利器 pg_activity 的部署和初步使用

前言:

postgresql的调优是比较重要的,那么,如何调优呢?自然是在某一个时间段内,通常是业务高峰期或者压测时间内实时观察数据库的运行情况,然后通过观察到的信息判断数据库的瓶颈,比如,读写瓶颈,索引瓶颈等等,最终得到一个比较准确的调优方案

那么,关键的就来了,如何实时监控数据库的运行状态?系统工具比如htop,top,free等等命令只是针对操作系统的,并不能准确反映数据库的运行情况,慢SQL这样的数据库运行细节是无法把握的哦,因此,专业的事情还是需要专业的人,专业的工具来做了,pg_activity 或者pg_top 这样的专业工具就非常的nice了

pg_activity 是一个相对较新的 PostgreSQL 实用程序,它提供了一种交互式的、易于阅读的方式来监控和分析 PostgreSQL 数据库活动。相比传统的命令行工具,如 psqlpg_stat_activity 视图,pg_activity 提供了更丰富的视觉展示和实时更新的特性,方便运维人员快速了解数据库的运行状态,它可以实时显示数据库的进程、查询、锁、等待事件等信息。

虽然不如 tophtop 这类通用系统监控工具普及,但在 PostgreSQL 社区中,pg_activity 越来越受到重视,尤其对于那些需要实时监控数据库活动的用户而言,它是一个非常有用的工具。pg_activity 通过清晰的表格形式展示进程、查询、内存、CPU使用率等信息,使得问题排查和性能分析更加直观便捷。

总之,虽然不能说 pg_activity 是绝对的主流或常用工具,但在 PostgreSQL 监控和管理领域,它是一个受欢迎且具有一定影响力的选择。

🆗,废话了半天,下面就直接上干货,不在多说了

一、

pg_activity 的安装部署(centos7)

pg_activity 和pg_top 这两个工具都是实时监控数据库运行信息的,但pg_top本文将不会多说什么,它十分类似于操作系统的实时监控小工具top命令,该工具监控的内容过于简单,其实对我们的调优活动帮助有限,而pg_activity 是有更多的功能,可以展示更多的数据库运行的详细的细节;这么说吧,就好像厨师的🔪和医生的手术刀一样,pg_activity 像手术刀一样准确

pg_activity 是基于python3.X运行的,安装部署方式比较多,但我这里只推荐使用rpm方式安装,因为这只是一个小工具,大可不必兴师动众的编译安装

yum安装也是比较的简单,把官方源配置好就可以了,安装部署见数据库的安装博客,不在这里废话了

Linux|centos7-postgresql数据库|yum安装数据库和配置repmgr高可用集群以及repmgr的日常管理工作-CSDN博客

这里需要说明一下,pg_activity 不需要特意安装在数据库的位置,可以随意安装到任意的服务器上,例如,我在192.168.123.19这个新服务器上安装pg_activity ,该服务器只安装了pg_activity ,也可以非常愉快的连接postgresql数据库,进行实时监控:

二、

简单的使用

该命令的使用非常简单方便,和psql基本一致,端口,用户,IP指定好,如果有密码按提示输入用户的密码就好了,root用户可以执行此命令:

例如,192.168.123.17服务器上安装的pg数据库,开放端口是15433,那么,连接命令如下:

bash 复制代码
pg_activity -h 192.168.123.17 -p15433 -Upostgres

程序运行起来后,就可以进行简单的压测来获取数据库运行的一些细节了:

按F3,可以查看当前数据库获取到锁的是哪些进程,哪些SQL命令,十分直观的显示:

按F2,查看在等待的SQL语句,空格键暂时停止实时显示

上述输出来自于 PostgreSQL 的查询活动监控,展示了当前正在运行的事务、锁定状态、等待时间和查询语句。以下是对每一列的解读:

  • SE:session ID,即会话编号,标识每个独立的数据库会话。
  • APP :应用程序名称,在这里是 pgbench,一个用于基准测试PostgreSQL性能的工具。
  • USER :执行查询的数据库用户,这里均为 pgbench
  • CLIENT :客户端地址和端口,这里均为 192.168.123.17/3
  • RELATION :受影响的表,例如 319565 代表表OID(对象标识符),None 表示未显示具体的表名。
  • TYPE :锁定类型,这里是 tuple(行级锁定)或 transactionid(事务ID锁定)。
  • MODE :锁定模式,这里均为 ExclusiveLock,表示独占锁,不允许其他事务同时持有该锁。
  • TIME+:事务等待锁定的时间,单位为秒。
  • Waiting :事务当前正在等待的资源,如 transactionidWALSyncClientRead 等。
  • state :事务的状态,例如 active(事务正在执行中)、idle in trans(事务已开始但尚未提交或回滚)。
  • Query:执行的SQL查询语句。

根据这些信息,可以看出 pgbench 在执行一组银行转账样例事务,包括对 pgbench_tellerspgbench_branches 表的更新操作,以及将交易历史记录插入到 pgbench_history 表中。同时,还可以观察到一些事务在等待锁定资源,这在并发环境中是很常见的现象。通过监控此类信息,可以分析数据库的性能瓶颈、死锁情况以及事务处理效率等方面的问题。

总之,可以看到pg_activity 非常容易但不简略的显示了postgresql数据库压测时的实时运行细节,可以暴露出数据库的弱点,压测命令如下;

bash 复制代码
-bash-4.2$ tail 1111.txt 
transaction type: <builtin: TPC-B (sort of)>
scaling factor: 1
query mode: simple
number of clients: 100
number of threads: 1
duration: 1000 s
number of transactions actually processed: 756649
latency average = 132.181 ms
tps = 756.539109 (including connections establishing)
tps = 756.547789 (excluding connections establishing)
-bash-4.2$  pgbench  -U postgres -p 15433 -T 1000 -c 100 -h 192.168.123.17 -d pgbench   > 1111.txt  2>&1 >>1111.txt

那么,其实关键的倒不是如何监测了,而是认识这些监控的数据,从而发现数据库的问题,上面我的数据库就比较强悍,TPS比较高嘛,吞吐率强大

好了pg_activity 这个小工具就完结撒花了!!!!~~~~~

相关推荐
noravinsc25 分钟前
python提升图片清晰度
开发语言·python
声声codeGrandMaster29 分钟前
Django之modelform使用
后端·python·django
facaixxx20241 小时前
什么是巨型帧Jumbo Frames?云服务器开启巨型帧有什么用?
运维·服务器
Chandler241 小时前
一图掌握 MySQL 核心要点
数据库·mysql
CodeJourney.2 小时前
从PPT到DeepSeek开启信息可视化的全新之旅
数据库·人工智能·算法·excel·流程图
水w3 小时前
【Python爬虫】简单案例介绍1
开发语言·爬虫·python
巨可爱熊4 小时前
高并发内存池(定长内存池基础)
linux·运维·服务器·c++·算法
zkmall4 小时前
ZKmall开源商城静态资源管理:Nginx 配置与优化
运维·nginx·开源
FreakStudio6 小时前
一文速通 Python 并行计算:07 Python 多线程编程-线程池的使用和多线程的性能评估
python·单片机·嵌入式·多线程·面向对象·并行计算·电子diy
yangang1856 小时前
linuxbash原理
linux·运维·服务器