ALICloudDB for PostgreSQL 试用报告 - 5 长短连接测试

本文将教你测试长连接和短连接的性能。
我们在连接阿里云RDS for PostgreSQL时,实际上并不是直接连接数据库的,而是通过了SLB。
那么这个代理有没有连接池功能呢?通过测试发现,即使有连接池的功能,也是会话级别的,所以如果你的业务系统如果是高并发的短事务,建议你在应用层启用连接池,如果不能启用,那么请在应用层自己假设一个连接池例如pgbouncer。
测试:
3433代理并不是全代理,所以我们看到客户端IP地址就是实际的客户端IP,而不是代理的IP。
postgres@xxx-> psql  -h xxxxxx.pg.rds.aliyuncs.com -p 3433 -U digoal postgres
psql (9.4.3, server 9.4.1)
Type "help" for help.
postgres=> select inet_server_addr(),inet_server_port(),inet_client_addr(),inet_client_port();
 inet_server_addr | inet_server_port | inet_client_addr | inet_client_port
------------------+------------------+------------------+------------------
 10.151.133.24    |             3006 | 10.172.180.141   |            48520
(1 row)

postgres@xxx-> netstat -anp|grep 3433
tcp        0      0 10.172.180.141:48520        100.99.60.159:3433          ESTABLISHED 29955/psql
代理的IP是100.99.60.159
postgres@xxx-> dig xxxxxx.pg.rds.aliyuncs.com

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.23.rc1.el6_5.1 <<>> xxxxxx.pg.rds.aliyuncs.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 33061
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 3, ADDITIONAL: 4

;; QUESTION SECTION:
;xxxxxx.pg.rds.aliyuncs.com. IN A

;; ANSWER SECTION:
xxxxxx.pg.rds.aliyuncs.com. 60 IN A 100.99.60.159

;; AUTHORITY SECTION:
rds.aliyuncs.com.       432000  IN      NS      ns5.aliyun.com.
rds.aliyuncs.com.       432000  IN      NS      ns3.aliyun.com.
rds.aliyuncs.com.       432000  IN      NS      ns4.aliyun.com.

;; ADDITIONAL SECTION:
ns3.aliyun.com.         432000  IN      A       115.124.17.155
ns4.aliyun.com.         432000  IN      A       110.75.20.27
ns5.aliyun.com.         432000  IN      A       110.75.38.28
ns5.aliyun.com.         432000  IN      A       198.11.138.248

;; Query time: 0 msec
;; SERVER: 10.202.72.118#53(10.202.72.118)
;; WHEN: Tue Jun 16 08:36:46 2015
;; MSG SIZE  rcvd: 200

短连接TPS测试结果:
postgres@xxx-> vi test.sql
select 1;

pgbench -M extended -C -n -r -f ./test.sql -P 1 -c 88 -j 88 -T 30 -h xxxxxx.pg.rds.aliyuncs.com -p 3433 -U digoal
progress: 1.0 s, 3201.8 tps, lat 2.234 ms stddev 0.372
progress: 2.0 s, 3291.6 tps, lat 2.241 ms stddev 0.349
progress: 3.0 s, 3352.2 tps, lat 2.250 ms stddev 0.370
progress: 4.0 s, 3310.7 tps, lat 2.253 ms stddev 0.361
progress: 5.0 s, 3316.0 tps, lat 2.369 ms stddev 0.528
progress: 6.0 s, 3320.8 tps, lat 2.385 ms stddev 0.484
progress: 7.0 s, 3310.0 tps, lat 2.398 ms stddev 0.480
progress: 8.0 s, 3382.5 tps, lat 2.409 ms stddev 0.465
progress: 9.0 s, 3333.0 tps, lat 2.412 ms stddev 0.475
progress: 10.0 s, 3333.7 tps, lat 2.400 ms stddev 0.464

postgres@xxx-> pgbench -M extended -C -n -r -f ./test.sql -P 1 -c 88 -j 88 -T 30 -h 100.99.60.159 -p 3433 -U digoal
Password:
progress: 1.0 s, 3433.3 tps, lat 2.290 ms stddev 0.378
progress: 2.0 s, 3330.3 tps, lat 2.257 ms stddev 0.342
progress: 3.0 s, 3326.6 tps, lat 2.273 ms stddev 0.453
progress: 4.0 s, 3293.9 tps, lat 2.244 ms stddev 0.358
progress: 5.0 s, 3343.6 tps, lat 2.276 ms stddev 0.352
progress: 6.0 s, 3421.8 tps, lat 2.322 ms stddev 0.398
progress: 7.0 s, 3611.0 tps, lat 2.475 ms stddev 0.493
progress: 8.0 s, 3599.6 tps, lat 2.454 ms stddev 0.480
progress: 9.0 s, 3554.5 tps, lat 2.458 ms stddev 0.476
progress: 10.0 s, 3590.4 tps, lat 2.466 ms stddev 0.476

长连接TPS测试结果:
postgres@xxx-> pgbench -M extended -n -r -f ./test.sql -P 1 -c 88 -j 88 -T 30 -h xxxxxx.pg.rds.aliyuncs.com -p 3433 -U digoal
progress: 1.0 s, 46156.5 tps, lat 1.847 ms stddev 0.370
progress: 2.0 s, 46477.1 tps, lat 1.892 ms stddev 0.238
progress: 3.0 s, 46863.0 tps, lat 1.877 ms stddev 0.233
progress: 4.0 s, 47023.7 tps, lat 1.870 ms stddev 0.282
progress: 5.0 s, 44680.1 tps, lat 1.968 ms stddev 0.649
progress: 6.0 s, 44693.4 tps, lat 1.967 ms stddev 0.600
progress: 7.0 s, 46783.2 tps, lat 1.880 ms stddev 0.286
progress: 8.0 s, 46629.4 tps, lat 1.886 ms stddev 0.249
progress: 9.0 s, 46894.5 tps, lat 1.875 ms stddev 0.249
progress: 10.0 s, 46838.3 tps, lat 1.877 ms stddev 0.274
progress: 11.0 s, 46993.2 tps, lat 1.871 ms stddev 0.272
progress: 12.0 s, 46889.7 tps, lat 1.875 ms stddev 0.248
^C
postgres@xxx-> pgbench -M extended -n -r -f ./test.sql -P 1 -c 88 -j 88 -T 30 -h 100.99.60.159 -p 3433 -U digoal
Password:
progress: 1.0 s, 45056.3 tps, lat 1.907 ms stddev 0.669
progress: 2.0 s, 46966.6 tps, lat 1.872 ms stddev 0.361
progress: 3.0 s, 47453.7 tps, lat 1.853 ms stddev 0.249
progress: 4.0 s, 46933.7 tps, lat 1.873 ms stddev 0.388
progress: 5.0 s, 47332.4 tps, lat 1.858 ms stddev 0.267
progress: 6.0 s, 46756.9 tps, lat 1.880 ms stddev 0.389
progress: 7.0 s, 45291.0 tps, lat 1.942 ms stddev 0.628
progress: 8.0 s, 47250.0 tps, lat 1.861 ms stddev 0.280
progress: 9.0 s, 45621.5 tps, lat 1.927 ms stddev 0.581
progress: 10.0 s, 45244.7 tps, lat 1.944 ms stddev 0.726
进程模式相比线程模式,fork process开销大一点,所以高并发的短事务请求,建议使用连接池。

[参考]
1. http://git.postgresql.org/gitweb/?p=pgbouncer.git;a=summary
时间: 2024-09-17 03:41:43

ALICloudDB for PostgreSQL 试用报告 - 5 长短连接测试的相关文章

ALICloudDB for PostgreSQL 试用报告 - 1 教你做RDS性能测试

来阿里云之前,做的一些RDS测试. 几个月过去了,阿里云RDS PG在性能方面做出了大量的代码层优化,感兴趣的童鞋赶紧测试,来PK我之前的测试数据吧. 测试机申请的RDS都是最低配置的,容量5GB,内存1GB,支持100个连接,IOPS 400. 先看看配置吧,为了提高性能,有一些参数是可以调整的,如下: postgres=> select name,substring(setting,1,10),unit from pg_settings order by category, name; na

ALICloudDB for PostgreSQL 试用报告 - 4 水平分库 之 节点扩展

RDS现在还欠缺一个功能,就是数据库克隆,你可以这么理解,给现有的数据库创建STANDBY,然后将这个STANDBY激活,就完成了对数据库的克隆. 为什么我们需要数据库克隆功能呢? 这会使得数据库的扩容变得非常简单,比如我们这里的应用场景,如果要将16个RDS,变成32个RDS,那么克隆无疑是最好的办法.因为不需要做逻辑数据迁移的事情,只需要删除不需要的数据库,以及调整plproxy的cluster配置即可. 我们先假设RDS有创建STANDBYD的功能(相信未来会增加),看看如何来实现RDS的

ALICloudDB for PostgreSQL 试用报告 - 2 教你RDS PG的水平分库

使用pl/proxy 做分布式处理的性能. 大家可供参考,注意目前plproxy不支持跨库关联,仅仅是函数代理. 如果要做跨库事务需要结合PostgreSQL的prepared transaction(分布式事务/2PC)来实现, 如果要做跨库关联,可以用PostgreSQL的外部表,例如在每个节点上都建立其他节点需要关联的表的外部表,这样也可以做关联. plproxy支持run on all,any,NR,HASH四种方式. 接下来我会一一测试 .    部署ECS: 安装PostgreSQL

ALICloudDB for PostgreSQL 试用报告 - 6 任意时间点恢复

阿里云的RDS for PostgreSQL目前提供的备份为物理备份,备份粒度可以自己设置,最频繁的基础备份可以做到一天一次. 有了这个备份和归档日志,我们可以做到基于任意时间点(实际上是事务提交或回滚点的粒度)的恢复. 在RDS的控制台可以看到:     接下来我将演示一下如何实现以及如何设计一个好的恢复方案. 甚至我们在了解其中的原理后,如果阿里云将来提供基于时间点的恢复服务,我们应该如何更好的与之结合来使用. 要恢复到任意时间点,我们就必须告诉恢复进程一个点,这个点可以是时间,字符串,或者

ALICloudDB for PostgreSQL 试用报告 - 3 水平分库 vs 单机 性能

本文是针对单个RDS实例(同样的配置)承载6400万数据的测试.对比前面的水平分库. 创建测试表,生成测试数据. create table userinfo(userid int,info text); create table session (userid int,last_login timestamp); create table login_log (userid int,db_user name,client_addr inet,                        cli

PostgreSQL支持100万个连接测试详解

背景 100万个数据库连接,绝逼疯了,常人怎么会干这种事情. 没错,数据库支持100万个连接意味着什么呢?不能用连接池吗? 除了抱着玩一玩的心态,也能了解到操作系统层的一些知识,何乐不为? 碰壁 根据我前几天写的<如何度量Kernel Resources for PostgreSQL>,我们可以评估得出,如果要支持100万个数据库客户端连接,操作系统应该如何配置. https://yq.aliyun.com/articles/58690 但是实际上能如愿吗? 以PostgreSQL 9.5为例

PostgreSQL AWR报告

PostgreSQL AWR报告 作者 digoal 日期 2016-11-23 标签 PostgreSQL , AWR , Oracle , 数据库诊断 , 性能报告 , snapshot , 快照 背景 熟悉Oracle的童鞋一定对AWR不陌生,通常要分析一个数据库在某个时间段的性能,可以从数据库的动态视图等统计信息记录中生成一份该时段的统计分析报告. 里面包含了常见的等待事件分析,TOP SQL, TOP event等. PostgreSQL是一个功能和Oracle几乎可以媲美的开源产品,

新版百度统计试用报告(一)

试用报告:基础知识和界面 首先,简单介绍一下百度统计的背景. 百度统计是什么? 百度统计是一款 Web 分析工具,做为一款 Web 分析工具,主要能够为线上业务服务商解决三个问题:你的网站的访问者都是谁?从那里来的?在你网站上都干了什么?这和大家所熟悉的 CNZZ.51.la和 Google Analytics比较类似(当然也有区别,放在下面一会儿说). 百度统计小历史 百度统计知道和使用的人并不算太多,但其实百度公司在 2007 年 11 月就发布了百度统计的 Beta 1.0 版,到 200

TOM-Skype试用报告

中国门户网站中排名第四的Tom.com没有像他的几位老大哥一样纷纷推出类似QQ的全能性及时通讯软件,而是选择了将Skype这个P2P.PC to Phone的语音聊天软件引入中国.中国用户可能对Skype不是很熟悉,但一定知道KaZaA这款P2P文件共享软件,他们其实是同一家公司的产品,只不过一个在前一个在后.笔者在第一时间试用了TOM-Skype,下面是我的试用报告. 一.安装以及注册账户 该安装包中提供了多种语言支持,当然也包括简体中文了. 许可协议授权: 安装完毕后开始创建自己的Skype