首页主机资讯如何在ubuntu上进行postgresql性能测试

如何在ubuntu上进行postgresql性能测试

时间2026-01-20 02:25:04发布访客分类主机资讯浏览529
导读:在 Ubuntu 上进行 PostgreSQL 性能测试 一 环境准备与工具安装 安装 PostgreSQL 与客户端工具(含 pgbench): sudo apt update sudo apt install -y postgres...

在 Ubuntu 上进行 PostgreSQL 性能测试

一 环境准备与工具安装

  • 安装 PostgreSQL 与客户端工具(含 pgbench):
    • sudo apt update
    • sudo apt install -y postgresql postgresql-contrib
  • 确认服务运行与连通性:
    • sudo systemctl status postgresql
    • sudo -u postgres psql -c “select version(); ”
  • 说明:pgbench 随 postgresql-contrib 提供,是官方内置的事务型基准工具,适合快速评估 TPS/延迟 与进行参数对比测试。

二 使用 pgbench 进行标准测试

  • 初始化数据集(TPC-B 默认脚本,含 BEGIN/UPDATE/SELECT/INSERT/COMMIT 等 7 条语句):
    • 创建测试库:createdb pgbench
    • 生成数据:pgbench -i -s 10 pgbench
      • 说明:比例因子 -s 10 约生成 1000 万行 pgbench_accounts(scale×100,000),可按机器内存适当增大,例如 -s 100 ≈ 1 亿行
  • 运行混合读写测试(示例:并发 32,持续 300 秒):
    • pgbench -c 32 -j 4 -T 300 -M prepared -r pgbench
      • 关键选项:-c 并发客户端,-j 工作线程,-T 持续时间(秒),-M prepared 使用预处理语句,-r 显示每条语句的延迟。
  • 只读测试(仅 SELECT,评估点查/范围查能力):
    • pgbench -c 32 -j 4 -T 300 -S pgbench
  • 自定义脚本(贴近业务 SQL):
    • 将业务事务写入脚本文件(如 bench.sql),执行:pgbench -c 16 -T 120 -f bench.sql mydb
  • 结果解读要点:
    • 关注输出中的 TPS(transactions per second)平均延迟标准差;TPS 越高越好,延迟越低且稳定越好。
    • 若使用默认脚本,可用近似关系估算 QPS:QPS ≈ TPS × 每事务语句数(默认事务约含 8 条 SQL)。

三 进阶测试与工具

  • 使用 sysbench 进行 OLTP 测试(可选):
    • 安装:sudo apt install -y sysbench
    • 准备数据(示例):sysbench oltp_read_write --db-driver=pgsql --tables=10 --table-size=100000 --pgsql-host=localhost --pgsql-port=5432 --pgsql-user=sbtest --pgsql-password=password --pgsql-db=sbtest prepare
    • 运行测试:sysbench oltp_read_write --db-driver=pgsql --tables=10 --table-size=100000 --pgsql-host=localhost --pgsql-port=5432 --pgsql-user=sbtest --pgsql-password=password --pgsql-db=sbtest --threads=32 --time=300 run
  • 其他工具与场景:
    • JMeter + JDBC:适合混合读写、接口层压测与复杂业务流程编排。
    • pgbench-tools:对 pgbench 结果做批量对比与可视化,便于参数调优回归。

四 测试设计与稳定性实践

  • 明确目标与环境:定义是测最大吞吐、P95/P99 延迟,还是特定业务场景;测试环境尽量贴近生产(硬件、数据量、连接数、参数)。
  • 数据集规模:确保数据集显著大于 shared_buffers,避免“全部命中内存”导致失真;必要时使用 -s 增大数据量。
  • 预热与稳态:先跑一轮短预热(如 -T 60),再执行正式测试(如 -T 300–600),并多次运行取中位数。
  • 连接与线程:并发 -c 逐步递增(如 8/16/32/64),线程数 -j 通常设为 CPU 核数或略低;观察 TPS 拐点与延迟劣化。
  • 监控与归因:同步采集
    • 系统:top/vmstat/iostat(CPU、内存、I/O 使用与饱和度)
    • 数据库:开启 pg_stat_statements,关注慢查询、锁等待、检查点、WAL 写入
    • 存储:关注 IOPS/吞吐/延迟 与 WAL、数据目录所在磁盘负载是否成为瓶颈
  • 结果记录:每次测试记录 TPS、平均/分位延迟、CPU/IO、WAL/检查点统计,便于对比不同参数或硬件改动的影响。

五 常见注意事项

  • 权限与安全:为压测用户授予必要权限,避免使用超级用户;在 .pgpass 或环境变量中管理口令,减少命令历史泄露。
  • 清理与隔离:压测库与生产库隔离;测试后按需 DROP DATABASETRUNCATE 清理,避免影响业务。
  • 日志与干扰:压测期间减少非必要日志与监控采集频率,避免额外 I/O 干扰;必要时将 WAL 与数据目录分别放置在不同磁盘以降低写放大争用。
  • 连接限制:避免超过 max_connections;若需高并发,优先使用连接池(如 pgbouncer)或增加连接数并评估上下文切换成本。
  • 统计重置:对比参数前后,重置或对比 pg_stat_statements 视图,确保评估口径一致。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: 如何在ubuntu上进行postgresql性能测试
本文地址: https://pptw.com/jishu/786535.html
Linux syslog日志如何传输 Debian如何用SecureCRT进行远程桌面

游客 回复需填写必要信息