pgCluu 5.0 发布
发布于 2026-10-22,HexaCluster
相关开源软件
马达加斯加,塔那那利佛,2026 年 10 月 20 日。
pgCluu
PostgreSQL 集群利用率分析
pgCluu 是一个用于全面审计 PostgreSQL 集群性能的 Perl 程序,由两部分组成:采集器通过 psql 和 sar 获取 PostgreSQL 服务器的统计信息,报告生成器则输出 HTML 报告和全部图表。
pgCluu 5.0 现已发布。这是一个大版本,增加了多项功能与报告,并修复了上一版本发布后报告的问题。原公告正文此处将版本号写为 6.0;本译文依据公告标题和项目 v5.0 发布说明校正为 5.0。
新功能:
- 增加复制槽报告,数据来自 pg_replication_slots。
- 增加 pg_hba_file_rules 的采集。
- 等待事件报告仅展示占全部观测等待事件 0.1% 以上的事件。
- 采集 pg_stat_io 的 I/O 统计信息(PG 16 及以上)。
- 增加以下报告:
- 各后端类型的 I/O 吞吐量。
- 共享缓冲区的写入者与淘汰情况。
- 缓冲区命中率与环形缓冲区。
- I/O 延迟与大小。
- WAL I/O。
- 临时关系 I/O。
- 异步 I/O(PG 18 及以上)。
- 采集更多内核调优参数,移除 shmmax 和 shmall:
- 此前未被 sysctl 过滤条件匹配到的 vm.dirty_expire_centisecs、vm.dirty_writeback_centisecs,以及其他所有 vm.dirty_* 参数。
- vm.min_free_kbytes、vm.watermark_scale_factor、kernel.numa_balancing。
- net.core.somaxconn、net.ipv4.ip_local_port_range、net.core.rmem_max、net.core.wmem_max、fs.file-max、fs.nr_open。
- /sys/kernel/mm/transparent_hugepage/shmem_enabled:PostgreSQL 的共享内存属于匿名共享内存,因此影响 shared buffers 的是这个设置,而非 enabled。
- 所有 CPU 的频率调节策略,而不再只采集 cpu0;另采集 cpuidle 驱动、intel_pstate 状态、能效偏好与 NUMA 节点数量。
- 各块设备的 read_ahead_kb、nr_requests、max_sectors_kb、wbt_lat_usec。
- 采集并报告 postmaster 进程的资源限制。pgcluu_collectd 现在会在 sysinfo.txt 的新 POSTMASTER 部分保存:
- postmaster 的 PID:通过 checkpointer 的父进程确定,其 /proc 条目任何用户均可读取;PostgreSQL 10 之前则读取 postmaster.pid。
- oom_score_adj,建议为 postmaster 设置为 -1000。
- 打开文件数、进程数和锁定内存的软限制与硬限制。
- cgroup 限制:cgroup v2(包括混合模式)中的 memory.max、memory.high、memory.swap.max、cpu.max、cpu.weight、io.max、pids.max,以及 memory.events 的 oom、oom_kill 计数;cgroup v1 中的内存和 CPU 配额限制。
pgcluu 与 pgcluu.cgi 会在系统信息的 Kernel 面板展示这些内容,对容量和 CPU 配额进行格式化,并为 oom_score_adj 与进程限制提供提示说明。
- 增加内核压力停顿信息和内存事件报告。pgcluu_collectd 每次运行时,都会向 kernel_stats.csv 追加以下累计计数:
- 主机的压力停顿信息 PSI(/proc/pressure,Linux 内核 4.20 及以上),以及 postmaster 所属 cgroup v2 的 CPU、内存和 I/O 压力。
- postmaster 所属 cgroup 的内存事件,即 memory.events 中的 high、max、oom、oom_kill。
- sar 没有报告的 /proc/vmstat 计数:直接内存回收(allocstall)、内存规整、透明大页分配与回退、OOM 杀进程、NUMA 分配及页缓存再次缺页载入。
pgcluu 与 pgcluu.cgi 的 System 菜单新增两个页面:
- Pressure stall information:展示主机和 PostgreSQL cgroup 中,部分任务或所有任务因 CPU、内存或 I/O 等待而停顿的时间比例。
- Kernel memory events:展示分配停顿、内存规整、透明大页、OOM 杀进程、cgroup 内存事件、页缓存再次缺页载入和 NUMA 分配。
完整变更、问题修复与致谢名单见 ChangeLog。
关于 pgCluu
本项目旨在提供完整的 PostgreSQL 审计工具,让用户无需额外依赖即可方便地审计本地或远程服务器。
即使只有 sar 输出文件,也可以用 pgCluu 绘制系统利用率图表。
致谢
pgCluu 是我在 Dalibo 与 HexaCluster 工作期间创建的一组原创工具,按 PostgreSQL 许可证发布。
pgCluu 由 Gilles Darold 创建并维护。欢迎通过 GitHub 提交想法、功能需求或补丁,共同改进工具。
链接
- 示例报告:http://pgcluu.darold.net/example/index.html
- 网站:http://pgcluu.darold.net/
- 下载:https://github.com/darold/pgcluu/releases
- 开发:https://github.com/darold/pgcluu
- 文档:https://github.com/darold/pgcluu/blob/master/README
原文