如何从pgbouncer加快PostgreSQL连接? (获得连接构成了大约80%的延迟)

问题描述 投票:0回答:1

我在Amazon EC2实例上设置了基本的pgbouncer配置。

我的客户端代码(AWS Lambda函数或开发时的localhost网络服务器)正在通过pgbouncer对我的数据库进行SQL查询。

当前,每个查询要花费150-200ms的时间来执行,其中大约80%是建立连接所花费的时间。

这是我获得联系的方式:

long start = System.currentTimeMillis();
Connection conn = DriverManager.getConnection(this.url, this.username, this.password);
log.info("Got connection in " + (System.currentTimeMillis() - start) + "ms")

this.url只是pgbouncer实例的位置。这是所测量的等待时间的样子,其中Got connection来自上述代码段,Executed in是另一个时间,用于测量执行PreparedStatement之后的经过时间。第一次连接通常会比较慢,这很好,随后的连接大约要持续100毫秒。

DBManager - Got connection in 190ms
DBManager - Executed in 232ms
DBManager - Got connection in 108ms
DBManager - Executed in 132ms
DBManager - Got connection in 108ms
DBManager - Executed in 128ms

有什么方法可以使速度更快?还是我基本上在请求上停留了至少100ms的延迟?我从Lambda和localhost获得了类似的速度,但是不幸的是,由于在VPC中使用Lambda时,由于新的弹性网络接口的设置偶尔会出现8-10秒的冷启动延迟,因此我无法将Lambda放入同一个VPC。 >

这是我第一次使用这种设置,因此我真的不知道从哪里开始。我可以通过增加数据库或pgbouncer的电源(RAM / CPU)来提高速度吗?我是否不应该为每个请求都获得一个新的连接(但这意味着每个Lambda都有一个连接池,然后是一个单独的pgbouncer池)?

我觉得这肯定是一个非常普遍的问题,因此必须有一些很好的方法来解决它,但是我什么也没找到。

我在Amazon EC2实例上设置了基本的pgbouncer配置。我的客户端代码(AWS Lambda函数或开发时的localhost网络服务器)正在通过...

postgresql amazon-web-services amazon-ec2 aws-lambda
1个回答
2
投票

您必须要求供应商弄清楚您与pgBouncer和pgBouncer与数据库服务器之间的路由所花费的时间是哪部分。我想这是第一部分。

© www.soinside.com 2019 - 2024. All rights reserved.