错误:抱歉,已经有太多客户了

Posted

技术标签:

【中文标题】错误:抱歉,已经有太多客户了【英文标题】:Error: sorry, too many clients already 【发布时间】:2018-11-29 12:27:24 【问题描述】:

我在我的 NodeJS 后端服务中使用 PostgreSQL。突然之间,当我启动服务时,我面临以下错误

 connection error error: sorry, too many clients already.

PostgresSQL 连接配置

 const pg = require(“pg”);
 const client = new pg.Client(
        host: “txslmxxxda6z”,
        user: “mom”,
        password: “mom”,
        db: “mom”,
        port: 5025
 );

由于上述错误,我无法查询数据库。我无法解决这个问题。能否请您提出解决方案

【问题讨论】:

关闭一些数据库连接,使您低于max_connections 关闭长时间空闲的空闲连接.. 你能建议我怎么做吗 【参考方案1】:

以下查询将为您提供帮助。

select max_conn,used,res_for_super,max_conn-used-res_for_super res_for_normal 
from 
  (select count(*) used from pg_stat_activity) t1,
  (select setting::int res_for_super from pg_settings where name=$$superuser_reserved_connections$$) t2,
  (select setting::int max_conn from pg_settings where name=$$max_connections$$) t3

【讨论】:

谢谢。我可以看到连接的详细信息,但请建议我如何释放这些连接以再次运行服务 SELECT pg_terminate_backend(procpid) FROM pg_stat_activity WHERE state= '' AND now() - query_start > '00:10:00'; 使用这个查询找出空闲连接 select * from pg_stat_activity where state='idle';【参考方案2】:

我遇到了同样的问题,“抱歉,客户已经太多了。请求超时”。 我设法解决了它。 您可以尝试一些方法

1)第一个可以增加最大连接数和sequilize中的其他设置比如

   
    max: 95,    //maximum connection which postgresql or mysql can intiate
    min: 0,     //maximum connection which postgresql or mysql can intiate
    acquire:20000, // time require to reconnect 
    idle: 20000, // get idle connection
    evict:10000 // it actualy removes the idle connection
   

2)。第二种方法是使用 timescaledb,因为有时对于复杂的查询,我们会遇到 timescale 数据的超时错误,您可以设置 timescaledb,以便运行复杂的数据库查询。 您还可以根据您的服务器要求为 postgres 设置最大客户端。

https://github.com/timescale/timescaledb-tune

【讨论】:

我只是改进了我上面的帖子。在连接池中使用“evict”,因为“idle”只是获得空闲连接。实际上“驱逐”删除空闲连接。 默认情况下,evict是1​​000ms,这个值是删除空闲连接的时间,所以我认为增加这个值会在更多的时间内允许更多的空闲连接。当然,这些是配置选项,其值取决于应用程序,但是,重要的是要知道如何使用它们来改进系统。

以上是关于错误:抱歉,已经有太多客户了的主要内容,如果未能解决你的问题,请参考以下文章

DBI 连接,失败:致命:抱歉,已经有太多客户端

当我运行我的测试套件时,它们因 PSQLException 失败:致命:抱歉,已经有太多客户端了

Arval SQLException: FATAL: 抱歉,postgres 中已经有太多客户端

spring boot postgres:致命:对不起,已经有太多客户了

PostgreSQL:负载测试引发错误 - Npgsql.PostgresException:'53300:抱歉,客户端已经太多了'

运行测试时Spring Boot“PSQLException:FATAL:抱歉,客户端已经太多”