PostgreSQL pgbench 支持100万连接
背景
《阿里云 RDS PostgreSQL 高并发特性 vs 社区版本 (1.6万并发: 3倍吞吐,240倍响应速度)》
最近测试的阿里云高并发版本的性能,在1.6万个连接下,实际SQL的响应速度是社区版本的240倍。但是很多网友问怎么测的1.6万个连接,因为pgbench默认只能连1000个连接。
超过1000个连接会报错如下
invalid number of clients
让pgbench支持100万个连接
1、需要poll patch
https://commitfest.postgresql.org/18/1388/
wget https://www.postgresql.org/message-id/attachment/60012/pgbench11-ppoll-v12.patch
2、下载PostgreSQL 11源码
wget https://ftp.postgresql.org/pub/snapshot/dev/postgresql-snapshot.tar.bz2
3、patch poll
tar -jxvf postgresql-snapshot.tar.bz2
cd postgresql-11devel
patch -p1 < ../pgbench11-ppoll-v12.patch
4、关闭限制
vi src/bin/pgbench/pgbench.c
//#ifdef HAVE_PPOLL // 修改
#define POLL_USING_PPOLL
#include <poll.h>
//#endif // 修改
case 'c':
benchmarking_option_set = true;
nclients = atoi(optarg);
if (nclients <= 0) // || (MAXCLIENTS != -1 && nclients > MAXCLIENTS)) // 修改
{
5、安装
./configure --prefix=/home/digoal/pgsql11
make world -j 128
make install-world
现在pgbench可以愉快的测试100万个连接了。
将来PG社区版本,应该会把PATCH合进来,支持超过1000个连接。
参考
《PostgreSQL 11 preview - pgbench 支持大于1000链接(ppoll()代替select())》
《阿里云 RDS PostgreSQL 高并发特性 vs 社区版本 (1.6万并发: 3倍吞吐,240倍响应速度)》