我正在为我的产品使用Postgres DB。使用slick 3执行批插入时,我收到一条错误消息:
org.postgresql.util.psqleexception:致命:抱歉,已经有太多客户端了
我的批插入操作将超过数千条记录。
我的博士后的最大连接数是100
如何增加最大连接数
仅仅增加最大连接数是个坏主意。您还需要增加shared_buffers和kernel.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服务器