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

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

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

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

如何增加最大连接数

仅仅增加最大连接数是个坏主意。您还需要增加shared_bufferskernel.shmmax


注意事项

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

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

每个PostgreSQL连接都会使用RAM来管理连接或使用它的客户端。连接越多,可以用来运行数据库的RAM就越多。

编写良好的应用程序通常不需要大量连接。如果你有一个需要大量连接的应用程序,那么考虑使用一个可以为你连接连接的工具比如PGZBOUNCER。由于每个连接都会消耗RAM,所以应该尽量减少它们的使用


如何增加最大连接数

1。增加max\u连接共享缓冲区

/var/lib/pgsql/{version\u number}/data/postgresql.conf

改变

最大连接数=100
共享缓冲区=24MB

最大连接数=300
共享缓冲区=80MB

shared\u buffers配置参数决定了PostgreSQL专用于缓存数据的内存量

  • 如果您的系统具有1GB或更大的RAM,合理的启动
    共享缓冲区的值是系统内存的1/4
  • 您不太可能发现使用超过40%的RAM工作得更好
    而不是一个较小的数额(如25%)
  • 请注意,如果您的系统或PostgreSQL构建是32位的,则可能
    将共享_缓冲区设置在2~2.5GB以上是不切实际的
  • 请注意,在Windows上,共享_缓冲区的大值不是
    有效,并且您可能会发现将其保持在相对较低的水平会有更好的效果
    而更多地使用操作系统缓存。在Windows上,有效范围为
    64MB到512MB

2。更改kernel.shmmax

您需要将内核最大段大小增加到略大一点
而不是共享的\u缓冲区

在文件/etc/sysctl.conf中设置参数,如下所示。它将在postgresql重新启动时生效(下面的一行将内核最大值设置为96Mb

kernel.shmmax=100663296

参考资料

Postgres Max连接和共享缓冲区

调整PostgreSQL服务器

发表评论