1

我们目前正在使用 Pgbouncer(安装在数据库服务器上)进行数据库连接池。同时我们使用 Npgsql 库,它有自己的连接池。我已经阅读了我们应该在 Npgsql 中禁用池并仅使用 Pgbouncer 的建议。

当我们在 Npgsql 中禁用连接池时会出现性能问题。根据我的测试,连接 pgbouncer 需要 100 毫秒。使用 PgBouncer 的服务器延迟小于 1 毫秒。

用 5 个连接执行 5 个查询会花费超过 500ms,这太多了。

我们使用正确吗?这种连接延迟正在扼杀我的表现。

4

2 回答 2

0

我尝试从网络中的不同服务器连接到 pgbouncer,它需要 8 到 22 毫秒。我假设,这是一些网络问题。

于 2016-10-25T12:50:23.593 回答
0

除非您遇到错误或兼容性问题,否则没有理由在 Npgsql 中禁用连接池。

PGBouncer 通过一次处理更多并发连接而不会使 Postgres 过载(为每个新连接创建一个进程)来帮助提高可伸缩性。这并不意味着创建新连接更快,因此最好重用现有池。

Npgsql 将维护一个从您的应用程序到 pgbouncer 的连接池,而 pgbouncer 将拥有一个从自身到 Postgres 的连接池。这可以正常工作,并将确保两个网络跃点尽可能高效。

于 2020-04-08T20:26:10.107 回答