Benchmarksql压测

2024-05-08 08:28
文章标签 压测 benchmarksql

本文主要是介绍Benchmarksql压测,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Benchmarksql压测

TPC-C测试的结果主要有两个指标,即流量指标(Throughput,简称tpmC)和性价比(Price/Performance,简称Price/tpmC)。

流量指标(Throughput,简称tpmC):按照TPC组织的定义,流量指标描述了系统在执行支付操作、订单状态查询、发货和库存状态查询这4种交易的同时,每分钟可以处理多少个新订单交易。所有交易的响应时间必须满 足TPC-C测试规范的要求,且各种交易数量所占的比例也应该满足TPC-C测试规范的要求。在这种情况下,流量指标值越大说明系统的联机事务处理能力越高

性价比(Price/Performance,简称Price/tpmc):即测试系统的整体价格与流量指标的比值,在获得相同的tpmC值的情况下,价格越低越好。

一、CentOS7安装JDK

下载JDK1.7/1.8,假设解压后的目录为jdk,这个目录可以放在任何位置,设置环境变量即可:

export JAVA_HOME=/opt/jdkexport PATH=$PATH:/opt/jdk/bin

二、配置BenchmarkSQL主机

1. 根据官方文档,安装必要的软件包

配置YUM源(若仅使用华为云内网的YUM源(http://mirrors.myhuaweicloud.com/repo/CentOS-Base-7.repo),会造成软件版本依赖问题)

## 配置华为YUM源mkdir -p /etc/yum.repos.d/repo_bak/mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/repo_bak/wget -O /etc/yum.repos.d/CentOS-Base.repo https://repo.huaweicloud.com/repository/conf/CentOS-7-reg.repo## 配置Epel源yum remove -y epel-releaseyum install -y https://repo.huaweicloud.com/epel/epel-release-latest-7.noarch.rpmcd /etc/yum.repos.d/rm -rf epel-testing.reposed -i "s/#baseurl/baseurl/g" /etc/yum.repos.d/epel.reposed -i "s/mirrorlist/#mirrorlist/g" /etc/yum.repos.d/epel.reposed -i "s@http://download.fedoraproject.org/pub@https://repo.huaweicloud.com@g" /etc/yum.repos.d/epel.repo## 顺刷新缓存yum clean allyum makecacheyum repolist all安装依赖软件包yum install gcc glibc-headers gcc-c++ gcc-gfortran readline-devel libXt-devel pcre-devel libcurl libcurl-devel -yyum install ncurses ncurses-devel autoconf automake zlib zlib-devel bzip2 bzip2-devel xz-devel -yyum install java-1.8.0-openjdk ant -y安装R语言(generateReport.sh脚本需要)yum install pango-devel pango libpng-devel cairo cairo-devel ## 使R语言支持png图片,否则报告生成有问题wget https://mirror.bjtu.edu.cn/cran/src/base/R-3/R-3.6.3.tar.gztar -zxf R-3.6.3.tar.gzcd R-3.6.3./configure && make && make install## 如果需要重新安装,请参考以下步骤 ##make uninstall./configuremakemake install

编译安装htop(服务器端和客户端都安装)

unzip htop-3.0.5.zipcd htop-3.0.5./autogen.sh && ./configure && make && make install

检查安装情况(java/ant/htop)

[root@benchmarksql ~]# ant -versionApache Ant(TM) version 1.9.4 compiled on November 5 2018[root@benchmarksql ~]# java -versionopenjdk version "1.8.0_262"OpenJDK Runtime Environment (build 1.8.0_262-b10)OpenJDK 64-Bit Server VM (build 25.262-b10, mixed mode)[root@benchmarksql ~]# htop --versionhtop 3.0.5[root@prod ~]# R --versionR version 3.6.3 (2020-02-29) -- "Holding the Windsock"Copyright (C) 2020 The R Foundation for Statistical ComputingPlatform: x86_64-pc-linux-gnu (64-bit)

2. 准备软件

解压软件及JDBC驱动

[root@benchmarksql ~]# cd /soft/[root@benchmarksql soft]# lsbenchmarksql-5.0.zip openGauss-1.1.0-JDBC.tar.gz[root@benchmarksql soft]# unzip benchmarksql-5.0.zip[root@benchmarksql soft]# tar -zxvf openGauss-1.1.0-JDBC.tar.gz[root@benchmarksql soft]# lsbenchmarksql-5.0 benchmarksql-5.0.zip openGauss-1.1.0-JDBC.tar.gz postgresql.jar

替换默认的postgresql驱动

[root@benchmarksql ~]# cd /soft/benchmarksql-5.0/lib/postgres/[root@benchmarksql postgres]# mv postgresql-9.3-1102.jdbc41.jar postgresql-9.3-1102.jdbc41.jar.bak[root@benchmarksql postgres]# mv /soft/postgresql.jar .[root@benchmarksql postgres]# lspostgresql-9.3-1102.jdbc41.jar.bak postgresql.jar

使用ant编译

[root@benchmarksql ~]# cd /soft/benchmarksql-5.0/[root@benchmarksql benchmarksql-5.0]# antBuildfile: /soft/benchmarksql-5.0/build.xmlinit:[mkdir] Created dir: /soft/benchmarksql-5.0/buildcompile:[javac] Compiling 11 source files to /soft/benchmarksql-5.0/builddist:[mkdir] Created dir: /soft/benchmarksql-5.0/dist[jar] Building jar: /soft/benchmarksql-5.0/dist/BenchmarkSQL-5.0.jarBUILD SUCCESSFULTotal time: 2 seconds

3. 配置软件

配置props文件(配置文件切忌多余空格,否则会出现各种错误)

[root@benchmarksql ~]# cd /soft/benchmarksql-5.0/run[root@benchmarksql run]# vi props.openGauss.1000w------------------------------------------------------------db=postgresdriver=org.postgresql.Driver// 修改连接字符串, 包含IP、端口号、数据库conn=jdbc:postgresql://192.168.0.11:26000/tpcc1000?prepareThreshold=1&batchMode=on&fetchsize=10// 设置数据库登录用户和密码。user=jackpassword=gauss@123warehouses=20 //仓库数,每个Warehouse的数据量大小约为76823.04KBloadWorkers=4 //用于在数据库中初始化数据的加载进程数量,默认为4 (建议填写CPU核数)terminals=6 //终端数即:并发客户端数量, 跟服务端最大work数对应,通常设置为CPU线程总数的2~6倍runTxnsPerTerminal=0 //每个终端(terminal)运行的固定事务数量,当该参数为非0时,runMins参数必须等于零runMins=5 //要运行指定的分钟,当该参数为非0时,runTxnsPerTerminal必须等于零limitTxnsPerMin=0 //每分钟总事务数terminalWarehouseFixed=false //在4.x兼容模式下运行时,设置为True。设置为false以均匀使用整个配置的数据库。//以下五个值相加之和为100 (45、43、4、4和4的默认百分比与TPC-C规范匹配)//New-Order:客户输入一笔新的订货交易;//Payment:更新客户账户余额以反映其支付状况;//Delivery:发货(模拟批处理交易);//Order-Status:查询客户最近交易的状态;//Stock-Level:查询仓库库存状况,以便能够及时补货newOrderWeight=45paymentWeight=43orderStatusWeight=4deliveryWeight=4stockLevelWeight=4//创建文件夹以收集详细结果数据。//通过注释取消此内容。resultDirectory=my_result_%tY-%tm-%td_%tH%tM%tSosCollectorScript=./misc/os_collector_linux.pyosCollectorInterval=1//收集OS负载信息。osCollectorSSHAddr=omm@192.168.0.11osCollectorDevices=net_eth0 blk_vda

配置tableCreates.sql脚本,调整表的表空间分布(充分利用多块磁盘的IO),根据需要调整

[root@benchmarksql ~]# cd /soft/benchmarksql-5.0/run/sql.common[root@benchmarksql sql.common]# vi tableCreates.sql
CREATE TABLESPACE tbs1 location '/gauss/data/tbs1';CREATE TABLESPACE tbs2 location '/gauss/data/tbs2'; create table bmsql_config (cfg_name varchar(30) primary key,cfg_value varchar(50));create table bmsql_warehouse (w_id integer not null,w_ytd decimal(12,2),w_tax decimal(4,4),w_name varchar(10),w_street_1 varchar(20),w_street_2 varchar(20),w_city varchar(20),w_state char(2),w_zip char(9))WITH (FILLFACTOR=80);create table bmsql_district (d_w_id integer not null,d_id integer not null,d_ytd decimal(12,2),d_tax decimal(4,4),d_next_o_id integer,d_name varchar(10),d_street_1 varchar(20),d_street_2 varchar(20),d_city varchar(20),d_state char(2),d_zip char(9))WITH (FILLFACTOR=80);create table bmsql_customer (c_w_id integer not null,c_d_id integer not null,c_id integer not null,c_discount decimal(4,4),c_credit char(2),c_last varchar(16),c_first varchar(16),c_credit_lim decimal(12,2),c_balance decimal(12,2),c_ytd_payment decimal(12,2),c_payment_cnt integer,c_delivery_cnt integer,c_street_1 varchar(20),c_street_2 varchar(20),c_city varchar(20),c_state char(2),c_zip char(9),c_phone char(16),c_since timestamp,c_middle char(2),c_data varchar(500))WITH (FILLFACTOR=80) tablespace tbs1;create sequence bmsql_hist_id_seq;create table bmsql_history (hist_id integer,h_c_id integer,h_c_d_id integer,h_c_w_id integer,h_d_id integer,h_w_id integer,h_date timestamp,h_amount decimal(6,2),h_data varchar(24))WITH (FILLFACTOR=80);create table bmsql_new_order (no_w_id integer not null,no_d_id integer not null,no_o_id integer not null)WITH (FILLFACTOR=80);create table bmsql_oorder (o_w_id integer not null,o_d_id integer not null,o_id integer not null,o_c_id integer,o_carrier_id integer,o_ol_cnt integer,o_all_local integer,o_entry_d timestamp)WITH (FILLFACTOR=80);create table bmsql_order_line (ol_w_id integer not null,ol_d_id integer not null,ol_o_id integer not null,ol_number integer not null,ol_i_id integer not null,ol_delivery_d timestamp,ol_amount decimal(6,2),ol_supply_w_id integer,ol_quantity integer,ol_dist_info char(24))WITH (FILLFACTOR=80);create table bmsql_item (i_id integer not null,i_name varchar(24),i_price decimal(5,2),i_data varchar(50),i_im_id integer);create table bmsql_stock (s_w_id integer not null,s_i_id integer not null,s_quantity integer,s_ytd integer,s_order_cnt integer,s_remote_cnt integer,s_data varchar(50),s_dist_01 char(24),s_dist_02 char(24),s_dist_03 char(24),s_dist_04 char(24),s_dist_05 char(24),s_dist_06 char(24),s_dist_07 char(24),s_dist_08 char(24),s_dist_09 char(24),s_dist_10 char(24))WITH (FILLFACTOR=80) tablespace tbs2;

4. 配置与数据库服务器的ssh互信

[root@benchmarksql ~]# ssh-keygen -t rsa[root@benchmarksql ~]# ssh-copy-id omm@192.168.0.11

二、配置openGauss DB主机

1. 创建数据库及用户

postgres=# create user jack with sysadmin identified by 'gauss@123';CREATE ROLEpostgres=# create database tpcc1000 encoding='UTF-8' owner=jack;CREATE DATABASE

2. 配置pg_hba.conf

[omm@prod ~]$ gs_guc reload -N all -I all -h "host tpcc1000 jack 192.168.0.10/32 sha256"

3. 备份数据目录,测试完毕后可以快速恢复

[omm@prod ~]$ gs_ctl stop -D /gauss/data/db1/[omm@prod ~]$ cp -r /gauss/data/db1 /gauss/data/db1_bak[omm@prod ~]$ gs_ctl start -D /gauss/data/db1/

三、BenchmarkSQL主机发起测试

1. 装载测试数据

[root@benchmarksql ~]# cd /soft/benchmarksql-5.0/run[root@benchmarksql run]# ./runDatabaseBuild.sh props.openGauss.1000w ## 执行前,请务必将props.openGauss.1000w文件的所有注释和多余空格删除,否则可能报错-- ------ Extra commands to run after the tables are created, loaded,-- indexes built and extras created.-- PostgreSQL version.-- ----vacuum analyze;
当执行完毕vacuum后,使用ctrl+c手动终止数据载入进程。

2. 运行TPCC测试

[root@benchmarksql ~]# cd /soft/benchmarksql-5.0/run[root@benchmarksql run]# ./runBenchmark.sh props.openGauss.1000w
## 执行前,请务必将props.openGauss.1000w文件的所有注释和多余空格删除,否则可能报错## terminals参数设置有大小范围要求,太大会报错:ERROR jTPCC : Term-00, Invalid number of terminals!y

四、查看测试结果

1. runBenchmark.sh运行结果

14:57:19,609 [Thread-3] INFO jTPCC : Term-00, Measured tpmC (NewOrders) = 14193.09

14:57:19,609 [Thread-3] INFO jTPCC : Term-00, Measured tpmTOTAL = 31578.42

14:57:19,609 [Thread-3] INFO jTPCC : Term-00, Session Start = 2021-01-19 14:52:19

14:57:19,609 [Thread-3] INFO jTPCC : Term-00, Session End = 2021-01-19 14:57:19

14:57:19,609 [Thread-3] INFO jTPCC : Term-00, Transaction Count = 157899

结果解释

这里测试的性能结果会在输出中显示

tpmC(NewOrders) 这里是指每分钟新增的交易量,这里的值是tpmTOTAL的一半的原因是neworderWeight最大是45%,即新增交易量的比重最大是45%,所以这里显示的值将会tpmTOTAL的一半,流量指标值越大说明系统的联机事务处理能力越高,通常性能压测主要参考指标值

tpmTOTAL 是每分钟执行的事务数,这里的值是直接证明当前环境的事务之性能力。

session start session end 是测试时间,这个时间根据大家的测试标准去限定。

TransactionCount是单位时间内总共执行的事务数。

2. 运行时的htop数据

image.png

3. html报告查看

## 检查R语言是否支持png# R
> capabilities()jpeg png tiff tcltk X11 aquaFALSE TRUE FALSE FALSE FALSE FALSEhttp/ftp sockets libxml fifo cledit iconvTRUE TRUE TRUE TRUE TRUE TRUENLS profmem cairo ICU long.double libcurlTRUE FALSE TRUE TRUE TRUE TRUE
## 生成html报告[root@benchmarksql run]# ./generateReport.sh my_result_2021-01-19_145218/Generating my_result_2021-01-19_145218//tpm_nopm.png ... OKGenerating my_result_2021-01-19_145218//latency.png ... OKGenerating my_result_2021-01-19_145218//cpu_utilization.png ... OKGenerating my_result_2021-01-19_145218//dirty_buffers.png ... OKGenerating my_result_2021-01-19_145218//blk_vda_iops.png ... OKGenerating my_result_2021-01-19_145218//blk_vda_kbps.png ... OKGenerating my_result_2021-01-19_145218//net_eth0_iops.png ... OKGenerating my_result_2021-01-19_145218//net_eth0_kbps.png ... OKGenerating my_result_2021-01-19_145218//report.html ... OK ## HTML报告[root@benchmarksql ~]# cd /soft/benchmarksql-5.0/run/my_result_2021-01-19_145218[root@benchmarksql my_result_2021-01-19_145218]# lsblk_vda_iops.png cpu_utilization.png dirty_buffers.png net_eth0_iops.png report.html tpm_nopm.pngblk_vda_kbps.png data latency.png net_eth0_kbps.png run.properties

image.png

image.png

image.png
image.png

这篇关于Benchmarksql压测的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/969824

相关文章

基于Go语言实现一个压测工具

《基于Go语言实现一个压测工具》这篇文章主要为大家详细介绍了基于Go语言实现一个简单的压测工具,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录整体架构通用数据处理模块Http请求响应数据处理Curl参数解析处理客户端模块Http客户端处理Grpc客户端处理Websocket客户端

性能测试工具 wrk,ab,locust,Jmeter 压测结果比较

前言 在开发服务端软件时,经常需要进行性能测试,一般我采用手写性能测试代码的方式进行测试,那有什么现成的好的性能测试工具吗? 性能测试工具 wrk,ab,locust,Jmeter 压测结果比较 详见: 性能测试工具 wrk,ab,locust,Jmeter 压测结果比较 Jmeter性能测试 入门

安装jmeter的梯度压测线程组(Custom Thread Groups)的插件

1、打开:Install :: JMeter-Plugins.org 2、进入主页后点击下面图片的链接进行安装 3、将安装包放入apache-jmeter-5.4.1    >   lib       >    ext  里面 4、打开Jmeter 点击下面的【Plugins Manager】 5、进入 【Plugins Manager】后选择【Avaliable Plug

压测工具大比武!谁是市场主流?

阿里云PTS 性能测试PTS(Performance Testing Service)是阿里云一款商业化的性能测试工具。支持按需发起压测任务,可支持百万并发、千万TPS流量发起能力,100%兼容JMeter。PTS支持的场景编排、API调试、流量定制、流量录制等功能,可快速创建业务压测脚本,精准模拟不同量级用户访问业务系统,帮助业务快速提升系统性能和稳定性。 阿里云PTS具备如下特性:

webserver使用webbench工具连续压测失败

参考资料:一次压力测试Bug排查-epoll使用避坑指南 - 两猿社 - 博客园 (cnblogs.com) Bug复现 使用Webbench对服务器进行压力测试,创建1000个客户端,并发访问服务器10s。 结果显示仅有少数几个请求被成功处理,0个请求处理失败,性能很差,服务器也没有返回错误。此时,从浏览器端访问服务器,发现该请求也不能被处理和响应,必须将服务器重启后,浏览器端才能访问正常

你对压测以及后端服务架构的理解是什么?线上的部署方式是什么?

一、对压测的理解 压力测试(压测)是通过模拟大量用户同时访问系统的场景,来评估系统在高负载情况下的性能表现和稳定性。 从目的来看,压测主要是为了发现系统的性能瓶颈,以便进行优化和改进。例如,确定系统能够承受的最大并发用户数、响应时间的阈值等。通过压测可以提前发现系统在高负载下可能出现的问题,如响应缓慢、服务崩溃、数据丢失等,从而在上线前进行针对性的优化,确保系统在实际使用中能够稳定可靠地运行。

redis-distributed-id-generator-start之id生成器压测的一些思考

文章目录 1.测试工程集成id生成器2.新建表3.测试代码4.jemeter压测结果预期5.总结 1.测试工程集成id生成器     省略–参考之前的文章 https://mp.weixin.qq.com/s/B1vcrPVnFI1pKH7RAnPQ5ghttps://blog.csdn.net/qq_34905631/article/details/138121262?s

一次压测引发的数据库 CPU 飙升

作者:昀鹤 一次压测过程中,当数据库的 qps 和 tps 都正常时,如果 cpu 利用率异常的高,应该如何排查?希望通过这篇文章,给你一些启发... 一、业务背景 业务需要控制频道内兑换现金的数量,于是在产品设计上给兑换现金增加了库存限制。 在此基础上形成了秒杀场景,峰值时核心接口 qps 上涨了近 600 倍(几十到几万) ,因此需要进行压测来对系统和 DB

压测工具Jmeter使用-1

一、安装部署 依赖:Java windows安装 1.配置环境变量:新建JMETER_HOME系统环境变量,值设置为Jmeter的安装路径, D:\Program Files (x86)\Jemter\apache-jmeter 2.运行Jemeter:安装路径下,双击bin目录下的jmeter.bat,打开界面 Linux安装 1.上传jmeter包到服务器上:apache-jmeter-5

【Mongodb-01】Mongodb亿级数据性能测试和压测

mongodb数据性能测试 一,mongodb数据性能测试1,mongodb数据库创建和索引设置2,线程池+批量方式插入数据3,一千万数据性能测试4,两千万数据性能测试5,五千万数据性能测试6,一亿条数据性能测试7,压测8,总结 一,mongodb数据性能测试 如需转载,请标明出处:https://zhenghuisheng.blog.csdn.net/article/de