盘口环境下搭建使用飞鸟Postgresql 远程源码基准信用网测试

比特逐星人
• 阅读 958

在本文中,我们将讨论盘口如何远程搭建出对 HAProxy 后面的 postgresql 集群进行基准测试。

SegmentFault用户【TG电报duotebb】版权所有,禁止转载。

在我们开始之前,谈谈我在写这篇文章时设计的环境元素是很有用的。

  1. 1 adet HAProxy
  2. 2 adet Etcd
  3. 2 adet Postgresql-14 节点(2GB RAM,32GB 磁盘空间)

首先,我们可以谈谈如果我们没有冗余结构,我们如何进行基准测试。我们对此只有一个要求,那就是postgresql-contrib包装。让我们在安装了 Postgresql 的基于 debian 的服务器上设置我们的依赖项,如下所示。

sudo apt install postgresql-contrib
盘口环境下搭建使用飞鸟Postgresql 远程源码基准信用网测试

有了这个包,pgbench命令就可以使用了。我们可以像下面这样运行帮助参数来查看它是否安装正确。

zeki@kubuntu21:~$ pgbench --help
pgbench is a benchmarking tool for PostgreSQL.

Usage:
  pgbench [OPTION]... [DBNAME]

Initialization options:
  -i, --initialize         invokes initialization mode
  -I, --init-steps=[dtgGvpf]+ (default "dtgvp")
                           run selected initialization steps
  -F, --fillfactor=NUM     set fill factor
  -n, --no-vacuum          do not run VACUUM during initialization
  -q, --quiet              quiet logging (one message each 5 seconds)
  -s, --scale=NUM          scaling factor
  --foreign-keys           create foreign key constraints between table
.
..
....

在确保我们的命令正常工作后,我们就可以开始我们的操作了。

1.为pgbench初始化必要的表

在使用 pgbench 之前,让我们使用-i参数对其进行初始化,如下所示。

sudo -u $DATABASE_USER pgbench -i -p $DATABASE_PORT -d $DATABASE_NAME
sudo -u postgres pgbench -i -p 5432 -d postgres
dropping old tables...
NOTICE:  table "pgbench_accounts" does not exist, skipping
NOTICE:  table "pgbench_branches" does not exist, skipping
NOTICE:  table "pgbench_history" does not exist, skipping
NOTICE:  table "pgbench_tellers" does not exist, skipping
creating tables...
generating data (client-side)...
100000 of 100000 tuples (100%) done (elapsed 0.42 s, remaining 0.00 s)
vacuuming...
creating primary keys...
done in 3.90 s (drop tables 0.01 s, create tables 0.69 s, client-side generate 0.72 s, vacuum 0.48 s, primary keys 2.01 s).

2.运行pgbench

我们可以如下开始我们的 pgbench 测试。

sudo -u $DATABASE_USER pgbench -c $CLIENT_NUM -j $JOB_NUM -t $TRANSACTION_NUM -d $DATABASE_NAME > benchmark.results

当我们按照上面的格式运行一个示例基准测试时,它将如下所示。

sudo -u postgres pgbench -c 2 -j 2 -t 100 -d postgres  > benchmark.results
Password: 
pgbench: pghost: 10.0.x.5 pgport: 5432 nclients: 3 nxacts: 100 dbName: postgres
starting vacuum...end.
pgbench: client 0 executing script "<builtin: TPC-B (sort of)>"
pgbench: client 0 executing \set aid
pgbench: client 5 executing script "<builtin: TPC-B (sort of)>"
pgbench: client 5 executing \set aid
pgbench: client 0 executing \set bid
pgbench: client 0 executing \set tid
pgbench: client 5 executing \set bid
.
..
...

该过程完成后,将生成如下所示的日志文件。此文件中包含的信息代表我们基准测试的结果。以下是我使用的基本系统的数据。

pgbench (14.2 (Debian 14.2-1.pgdg110+1))
transaction type: <builtin: TPC-B (sort of)>
scaling factor: 1
query mode: simple
number of clients: 2
number of threads: 2
number of transactions per client: 100
number of transactions actually processed: 200/200
latency average = 71.099 ms
initial connection time = 9.067 ms
tps = 28.129593 (without initial connection time)

1. 远程运行 pgbench

除了上述之外,只在 pgbench 参数中添加 HAProxy ip 地址和 postgresql 端口就足够了。它可以按如下方式运行。

sudo -u postgres pgbench -c 2 -j 2 -t 100 -d postgres -h 10.0.x.5 -p 5000 > benchmark.results
Password: 

pgbench: client 0 receiving
pgbench: client 2 executing \set aid
pgbench: client 2 executing \set bid
pgbench: client 2 executing \set tid
pgbench: client 1 receiving
pgbench: client 2 executing \set delta
pgbench: client 2 sending BEGIN;
pgbench: client 1 sending INSERT INTO pgbench_history (tid, bid, aid, delta, mtime) VALUES (6, 1, 73134, 4493, CURRENT_TIMESTAMP);
pgbench: client 1 receiving
pgbench: client 2 receiving
pgbench:pgbench: client 1 receiving
.
..
...

作为输出,我们可以看到如下结果。

pgbench (14.4 (Ubuntu 14.4-0ubuntu0.22.04.1), server 14.2 (Debian 14.2-1.pgdg110+1))
transaction type: <builtin: TPC-B (sort of)>
scaling factor: 1
query mode: simple
number of clients: 2
number of threads: 2
number of transactions per client: 100
number of transactions actually processed: 200/200
latency average = 48.882 ms
initial connection time = 15.425 ms
tps = 40.914923 (without initial connection time)
点赞
收藏
评论区
推荐文章
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Wesley13 Wesley13
3年前
java常用类(2)
三、时间处理相关类Date类:计算机世界把1970年1月1号定为基准时间,每个度量单位是毫秒(1秒的千分之一),用long类型的变量表示时间。Date分配Date对象并初始化对象,以表示自从标准基准时间(称为“历元”(epoch),即1970年1月1日08:00:00GMT)以来的指定毫秒数。示例:packagecn.tanjian
Stella981 Stella981
3年前
Openstack 单元测试
这篇文章介绍的是在Openstacknova开发过程中如何进行单元测试,在nova的开发环境搭建好之后(环境搭建可参考上一篇博文(http://my.oschina.net/zyzzy/blog/70484)),如果对源码进行了修改,就应该做单元测试,本篇文章基本上是对官方文档的翻译,仅对关键步骤稍作介绍,相关的资料后面列举。1.执行测试   
Stella981 Stella981
3年前
Hyperledger Caliper
在这个教程中,我们将学习如何使用HyperledgerCaliper对包含多个排序节点的Fabric网络进行基准测试,我们使用DockerSwarm作为容器编排工具。HyperledgerFabric区块链开发教程:Fabric区块链Node.js开发详解(https://www.oschina.net/action/G
Stella981 Stella981
3年前
Elastic日报 第288期 (2018
1\.个更好的Elasticsearch基准测试技巧。http://t.cn/R16rZXS长按此QRCode,阅读原文!(https://oscimg.oschina.net/oscnet/0be2b3c94914422d8de5cef6c34e5fd6.png)2\.ElasticSearch的搭建与数据统计。
Easter79 Easter79
3年前
Statistics In PostgreSQL
本文是类似源码阅读的一篇文章,初步对PostgreSQL统计信息模块进行了一些简单的介绍。这里选择PostgreSQL而不是其他数据库的原因是在各种论文中看到一些设计估算的比较时,PostgreSQL总是会在论文中有一个不错的表现。PG中收集的统计信息在PostgreSQL中,收集的统计信息分为三类:为一张
Wesley13 Wesley13
3年前
Java基准测试利器OpenJDK
什么是基准测试?这里说道的基准测试Benchmark其实是微基准测试MicroBenchmark。简单点说,就是我们看到或听到很多人说什么方式去使用Java的性能好呀,不要猜,动手来测吧!详细的概念可以参见:https://github.com/google/caliper/wiki/JavaMicrobenchmarks
Wesley13 Wesley13
3年前
MySQL 快速创建千万级测试数据
备注:此文章的数据量在100W,如果想要千万级,调大数量即可,但是不要大量使用rand()或者uuid()会导致性能下降背景在进行查询操作的性能测试或者sql优化时,我们经常需要在线下环境构建大量的基础数据供我们测试,模拟线上的真实环境。废话,总不能让我去线上去测试吧,会被DBA砍死的创建测试数据的方式
Java服务总在半夜挂,背后的真相竟然是... | 京东云技术团队
最近有用户反馈测试环境Java服务总在凌晨00:00左右挂掉,用户反馈Java服务没有定时任务,也没有流量突增的情况,Jvm配置也合理,莫名其妙就挂了
S3基准测试工具 - Warp使用简介
warp是⼀款开源的S3基准测试⼯具,开源S3项⽬minio下的⼀个⼦项⽬,可以对兼容S3语义的服务进⾏基准测试。
美凌格栋栋酱 美凌格栋栋酱
5个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(