小编典典

如何增加 postgres 中的最大连接数?

all

我正在为我的产品使用 Postgres DB。在使用 slick 3 进行批量插入时,我收到一条错误消息:

org.postgresql.util.PSQLException:致命:抱歉,已经有太多客户端了。

我的批量插入操作将超过数千条记录。我的 postgres 的最大连接数是 100。

如何增加最大连接数?


阅读 134

收藏
2022-08-19

共1个答案

小编典典

只是增加 max_connections是坏主意。shared_buffers你也需要增加kernel.shmmax


注意事项

max_connections确定与数据库服务器的最大并发连接数。默认值通常为 100 个连接。

在增加连接数之前,您可能需要扩展您的部署。但在此之前,您应该考虑是否真的需要增加连接限制。

每个 PostgreSQL 连接都会消耗 RAM 来管理连接或使用它的客户端。 您拥有的连接越多,您将使用的 RAM 就越多,而这些 RAM
可用于运行数据库。

一个编写良好的应用程序通常不需要大量的连接。如果您的应用确实需要大量连接,请考虑使用pg_bouncer
类的工具,它可以为您汇集连接。由于每个连接都会消耗
RAM,因此您应该尽量减少它们的使用。


如何增加最大连接数

1.增加max_connectionshared_buffers

/var/lib/pgsql/{version_number}/data/postgresql.conf

改变

max_connections = 100
shared_buffers = 24MB

max_connections = 300
shared_buffers = 80MB

配置参数决定了 PostgreSQL 有* 多少shared_buffers内存 用于 缓存 数据 ***

  • 如果您的系统具有 1GB 或更多 RAM,shared_buffers 的合理起始值是系统内存的 1/4。
  • 您不太可能发现使用超过 40% 的 RAM 比使用少量(如 25%)更好
  • 请注意,如果您的系统或 PostgreSQL 构建是 32 位,则将 shared_buffers 设置为 2 ~ 2.5GB 以上可能不切实际。
  • 请注意,在 Windows 上,较大的 shared_buffers 值没有那么有效,您可能会发现将其保持在相对较低的水平并更多地使用操作系统缓存来获得更好的结果。在 Windows 上, 有用的范围是 64MB 到 512MB

2.更改kernel.shmmax

您需要将内核最大段大小增加 为 略大于shared_buffers.

在文件/etc/sysctl.conf中设置参数,如下所示。重启时postgresql生效(以下行使内核最大为96Mb

kernel.shmmax=100663296

参考

Postgres
最大连接数和共享缓冲区

调整你的 PostgreSQL
服务器

2022-08-19