当前位置:   article > 正文

Greenplum 连接发生 FATAL: sorry,too many clients already_fatal: sorry, too many clients already

fatal: sorry, too many clients already

Greenplum 连接发生 FATAL: sorry,too many clients already

1、出现原因

出现该问题的原因是因为当前的数据库连接已经达到阈值,也就是可连接数已经被占用满,此时数据库是会拒绝外部的请求的,包括第三方客户端例如Navicat以及数据库终端,请求会报错如下:

2、解决方法

首先就是先要释放出可用连接,不然连终端都连不上

1、查出数据库连接进程

ps -ef | grep postgres
  • 1

2、干掉空闲的僵尸连接

上述查出的信息如下:

在这里插入图片描述

接下来对部分空闲状态的连接进程进行清理,kill 掉部分的僵尸连接来释放连接占用

kill 进程ID
  • 1

释放出连接占用后我们进行 psql 连接终端

在这里插入图片描述

可以看到已经正常连接上了,第三方客户端也是一样可以的,这只是临时的解决方法,最终需要解决的还是数据库的连接方面配置以及外部连接的优化

1、配置方面

适当扩大数据库的最大连接数
找到数据库配置文件 postgres.conf

// 适当扩大最大连接数比如 200 --> 500
max_connections = 200
max_connections = 500
  • 1
  • 2
  • 3

也可以配置 idle_in_transaction_session_timeout
或者配置 idle_session_timeout
这两种配置都属于空闲连接超时配置,由于我使用到的是Greenplum数据库,且实例数据库PostgreSQL版本是9.4.26版本的,版本比较老,貌似不支持这两种参数,没有过多深究

2、连接方面

1、后端程序连接数据库记得即用即关,记得close
2、连接池进行一些适配性调整配置,空闲超时连接关闭
3、可以编写脚本查出 idle 状态的连接,配合后端程序逻辑定时清理

// 以下是查数据库连接的 state 代表状态
SELECT datname, pid, application_name, state
FROM pg_stat_activity;
  • 1
  • 2
  • 3

终语:以上为作者本人实际碰到的一些问题和解决方法,有错误和不到的地方还请多多指教

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/454919
推荐阅读
相关标签
  

闽ICP备14008679号