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

文章讲述了Greenplum数据库遇到太多客户端错误的原因,包括连接数满和空闲连接。提供了解决方案,如释放连接、调整配置(如增大最大连接数)、优化连接管理(如后端程序关闭、连接池设置和定时清理脚本)。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

1、出现原因

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

2、解决方法

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

1、查出数据库连接进程

ps -ef | grep postgres

2、干掉空闲的僵尸连接

上述查出的信息如下:

在这里插入图片描述

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

kill 进程ID

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

在这里插入图片描述

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

1、配置方面

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

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

也可以配置 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
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值