暂无图片
暂无图片
2
暂无图片
暂无图片
暂无图片

使用 BenchmarkSQL 压测 openGauss

原创 黄山谷 4天前
52



环境:

环境信息
虚拟机:VMware Virtual Platform
系统:银河麒麟 V10 SP3 (x86_64)
cpu:4C
内存:32G
数据库版本openGauss 3.0.6 (x86_64)
安装模式单节点
数据目录文件系统xfs
shared_buffers8GB
work_mem32M
maintenance_work_mem256MB
wal_buffers64MB
checkpoint_timeout15min
checkpoint_completion_target0.9
synchronous_commitoff(压测建议)
full_page_writesoff(压测建议,生产不开)
max_connections1000
effective_cache_size3GB
random_page_cost1.1
huge_pagestry
-- 连接数据库后执行
gsql -p 15400 -U omm -dpostgres -W OG11ZpgmNFGt

ALTER SYSTEM SET shared_buffers = '4GB';
ALTER SYSTEM SET checkpoint_timeout = '15min';
ALTER SYSTEM SET checkpoint_completion_target = 0.9;
ALTER SYSTEM SET full_page_writes = off;
ALTER SYSTEM SET max_connections = 1000;
ALTER SYSTEM SET wal_buffers = '64MB';
-- 重载配置使其生效
SELECT pg_reload_conf();


vi /data/dn/postgresql.conf
work_mem = 32MB
maintenance_work_mem = 256MB
synchronous_commit = off
random_page_cost = 1.1
effective_cache_size = 24GB

gs_om -t restart

-- 查看当前生效参数
SELECT name, setting, unit 
FROM pg_settings 
WHERE name IN (
    'shared_buffers', 'work_mem', 'maintenance_work_mem', 'wal_buffers',
    'checkpoint_timeout', 'checkpoint_completion_target', 'synchronous_commit',
    'full_page_writes', 'max_connections', 'effective_cache_size',
    'random_page_cost', 'huge_pages'
);
img

状态

gs_om -t status --detail
img

参数名 (Parameter)含义建议设置范围或常见值备注
terminals并发连接数,模拟的客户端数量通常设为服务器CPU总线程数的2~6倍核心性能参数之一
warehouses仓库数量每个仓库约100MB,数据库总大小建议为服务器物理内存的2-5倍决定测试数据集的大小
loadWorkers初始化数据时使用的并行工作线程数默认为4,可根据需要增加以加快数据导入速度仅用于数据准备阶段
runMins性能测试运行的持续时间(分钟)功能性测试可设短时间(如5-10分钟),正式基准测试需数小时甚至数天与 runTxnsPerTerminal 二选一,不能同时为非0值
runTxnsPerTerminal每个终端要完成的事务固定数量与 runMins二选一设置后 runMins必须为0
newOrderWeightpaymentWeight不同事务类型的权重(NewOrder, Payment, OrderStatus, Delivery, StockLevel五个权重值之和必须为100默认值为45, 43, 4, 4, 4模拟TPC-C标准规范或自定义业务混合场景

运行 BenchmarkSQL 测试

初始化数据库

创建测试数据库,相应的账户,以及授权:

gsql -p 15400 -U omm -dpostgres -W OG11ZpgmNFGt
create user benchmarksql with sysadmin PASSWORD 'OG11ZpgmNFGt';
CREATE DATABASE benchmarksql;

设置免密: 用omm用户可以,root 用户测试完之后建议删掉免密

ssh-keygen -t rsa
ssh-copy-id root@10.10.3.155
ssh root@10.10.3.155 date
img

编辑配置文件

vi props.gs 
db=openGauss
driver=org.opengauss.Driver
conn=jdbc:opengauss://10.10.3.155:15400/benchmarksql?useUnicode=true&characterEncoding=utf-8
user=benchmarksql
password=OG1xxakUx

// -- 数据库总大小建议为服务器物理内存的2-5倍
warehouses=50
// -- 初始化数据时使用的并行工作线程数
loadWorkers=4
// -- 并发连接数,CPU总线程数的2~6倍
terminals=10

// -- 每个终端要完成的事务固定数量,与 runMins 二选一,设置后 runMins 必须为 0
runTxnsPerTerminal=0
// -- 性能测试运行的持续时间(分钟),功能性测试可设短时间(如5-10分钟),正式基准测试需数小时,与 runTxnsPerTerminal 二选一,不能同时为非0值
runMins=5
// -- 每分钟事务数上限,设成一个极大值相当于不限速,让系统跑满
limitTxnsPerMin=100000000
// -- 是否固定终端绑定仓库。
// true= 每个 terminal 固定访问同一个 warehouse(TPC-C 4.x 兼容模式,模拟"本地业务")
// false= 所有 terminal 均匀访问所有 warehouse(更符合真实分布式场景)
terminalWarehouseFixed=true

// -- 新订单 — 最核心的事务,模拟客户下单
newOrderWeight=45
// -- 支付 — 订单付款
paymentWeight=43
// -- 订单状态查询 — 查订单
orderStatusWeight=4
// -- 发货 — 后台批量发货处理
deliveryWeight=4
// -- 库存水平查询 — 查库存
stockLevelWeight=4

// -- 测试结果输出目录名
resultDirectory=openGauss_result_%tY-%tm-%td_%tH%tM%tS
// -- OS 指标采集脚本路径,BenchmarkSQL 用它来收集数据库服务器的 CPU、内存、磁盘、网络等指标,随压测一起跑
osCollectorScript=./misc/os_collector_linux.py
// -- 采集间隔(秒),每 1 秒采集一次 OS 指标
osCollectorInterval=1
// -- 远程采集目标,通过 SSH 登录 以omm 或者 root 用户执行采集脚本。 
osCollectorSSHAddr=root@10.10.3.155
// net_ens33 监控网卡 ens160 的网络吞吐(RX/TX bytes/packets)
// blk_sdb: 监控磁盘 sdb 的 IOPS / 吞吐量
osCollectorDevices=net_ens33 blk_sdb

典型场景配置参考

轻量测试(开发环境)

warehouses=2
terminals=4
runMins=1

压力测试(性能摸底)

warehouses=50
terminals=50
runMins=10
terminalWarehouseFixed=false

长时间稳定性测试

warehouses=100
terminals=100
runMins=60
terminalWarehouseFixed=false

build

./runDatabaseBuild.sh props.gs
img
img

run 运行测试

./runBenchmark.sh ./props.gs 
img

可以监控下:

iostat -xmt 1
img

输出:

img

report 生成图形化测试报告

生成报告前,我们要安装 R 语言环境

安装依赖

yum install -y gcc gcc-c++ gcc-gfortran \
  readline-devel libXt-devel libpng-devel libjpeg-turbo-devel \
  libtiff-devel cairo-devel pango-devel \
  zlib-devel bzip2-devel xz-devel pcre2-devel \
  curl-devel openssl-devel \
  java-1.8.0-openjdk-devel \
  perl make automake autoconfyum install -y texlive texinfo --nogpgcheck
编译安装cd /usr/local/src
wget https://cran.r-project.org/src/base/R-4/R-4.3.3.tar.gz
tar -xzf R-4.3.3.tar.gz
cd R-4.3.3

./configure \
  --prefix=/usr/local/R \
  --enable-R-shlib \
  --with-readline \
  --with-x \
  --with-libpng \
  --with-jpeglib \
  --with-cairo

  make -j$(nproc)
  make install

配置环境变量

echo 'export PATH=/usr/local/R/bin:$PATH' >> /etc/profile
source /etc/profile

R --version


这样我们就可以生成图形化的报告了

./generateReport.sh ./openGauss_result_2026-06-25_222407
img

接下来就可以在浏览器中打开测试报告了

img

img

img

img

img

测试完之后,清理数据

./runDatabaseDestroy.sh props.gs 
img

最后修改时间:2026-06-26 09:46:44
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论