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

Postgresql 如何增加postgres中的最大连接数?,postgresql,Postgresql,我正在为我的产品使用Postgres DB。使用slick 3执行批插入时,我收到一条错误消息: org.postgresql.util.psqleexception:致命:抱歉,已经有太多客户端了 我的批插入操作将超过数千条记录。 我的博士后的最大连接数是100 如何增加最大连接数?更改最大连接数变量 在位于的postgresql.conf文件中 /var/lib/pgsql/data或/usr/local/pgsql/data/仅仅增加最大连接数是个坏主意。您还需要增加shared_buff

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

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

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


如何增加最大连接数?

更改最大连接数变量 在位于的postgresql.conf文件中
/var/lib/pgsql/data或/usr/local/pgsql/data/

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


注意事项

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

在增加连接数之前,您可能需要扩大部署规模。但在此之前,你应该考虑你是否真的需要增加连接限制。 每个PostgreSQL连接都会使用RAM来管理连接或使用它的客户端。连接越多,可以用来运行数据库的RAM就越多

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


如何增加最大连接数

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

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

改变

max_connections = 100
shared_buffers = 24MB

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


参考资料


除了温妮的好答案

如果任何人在您的设置中找不到postgresql.conf文件位置,您可以随时询问postgres本身

SHOW config_file;

对我来说,仅仅改变max_连接就成功了

使用连接池,如pgBouncer或pgPool1。首先检查中间件是否没有保持太多的连接处于打开状态,或者是否正在泄漏连接。2.(可能)接下来使用连接池。3.(几乎)永远不要增加此类问题的允许连接数,在大多数情况下,这会使情况变得更糟。(除非您完全确定)另请参阅,了解使用SQL命令而不是配置的选项。为什么使用pg_hba.conf?它没有关于连接数的任何参数,只有如何连接。另一方面,postgresql.conf。。。。但是数百个连接是一个坏主意,不要这样做,使用连接池或遭受性能问题。PostgreSQL 8.3是多年的EOL,请使用最新版本。答案很好。两个问题。。100663296如何等于96MB?为什么我们要改变shmmax呢?它的作用是什么?100663296字节=96MB(二进制)。shmmax是共享内存段的最大大小。现在,由于我们增加了共享缓冲区的大小,我们需要更改shmmax以适应增加的缓存内存。@Robbo_UK 96*1024*1024=100663296您可以使用它来帮助您确定系统的这些设置在更改之前检查您当前的kernel.shmmax设置(
cat/proc/sys/kernel/shmmax
)。在现代系统中,它已经设置得高得离谱,不应该改变。在Ubuntu 18.04上,我的默认设置为
18446744073692774399
。谢谢。在Ubuntu 18.04中,它是
/etc/postgresql/11/main/postgresql.conf
kernel.shmmax=100663296
SHOW config_file;