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

时间:2015-06-11 10:17:18

标签: postgresql

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

  

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

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

如何增加最大连接数?

3 个答案:

答案 0 :(得分:123)

只是增加max_connections是个坏主意。您还需要增加shared_bufferskernel.shmmax

<强>考虑

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

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

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

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

如何增加最大连接次数

<强> 1。增加max_connectionshared_buffers

/var/lib/pgsql/data/postgresql.conf

中的

更改

max_connections = 100
shared_buffers = 24MB

max_connections = 300
shared_buffers = 80MB

shared_buffers配置参数确定内存 专用对PostgreSQL用于缓存数据的程度。

  • 如果您的系统具有1GB或更多RAM,则合理启动 shared_buffers的值是系统内存的1/4。
  • 您不太可能发现使用超过40%的RAM来更好地工作 比较小的数量(如25%)
  • 请注意,如果您的系统或PostgreSQL版本是32位,它可能会 将shared_buffers设置为2~2.5GB以上是不切实际的。
  • 请注意,在Windows上,shared_buffers的大值不是 有效,你可以找到更好的结果,保持相对较低 并且更多地使用OS缓存。在Windows上,有用的范围是 64MB到512MB

<强> 2。更改kernel.shmmax

您需要将内核最大段大小增加为稍大 而不是shared_buffers

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

kernel.shmmax=100663296

参考文献

Postgres Max Connections And Shared Buffers

Tuning Your PostgreSQL Server

答案 1 :(得分:7)

添加到小熊的好答案中,

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

SHOW config_file;

对我来说,仅更改max_connections就可以了。

答案 2 :(得分:2)

更改max_connections变量 在postgresql.conf文件中  / var / lib / pgsql / data或/ usr / local / pgsql / data /