记处理PostgreSQL连接太多的问题

开发同事在自己的windos电脑搭建了PostgreSQL,但是应用程序连接数据库,出现“数据库的连接太多了**”。由于未设置详细的log内容;只获取到这个信息。

1|0先查看实例的max_connections;

show max_connections; select name, setting, context, source from pg_settings where name = 'max_connections'

结果是:500

2|0查看实例的连接数

--获取当前实例的总的连接数 select count(1) from pg_stat_activity ; --获取当前实例的空闲连接数 select count(1) from pg_stat_activity where state = 'idle';

结果是:

  • 总的连接数:107
  • 空闲的连接数:101

因为应用程序连接是使用jdbc的连接池;需要提前申请连接资源。但问题是连接数远远少于500

3|0验证下参数是否生效

在9.5以后的版本;可以采用

select * from pg_file_settings where error is not null;

若没有记录;则表明没有失效的参数

4|0通过任务管理器查看内存使用情况

内存使用率不过20%;可以排除不是申请连接时内存不够

5|0查看数据库的连接数是否限制

通过pg_databases可以查看

select datname,datconnlimit from pg_database;

查看结果;问题出在这;开发在创建数据库加了CONNECTION LIMIT = 100
解决方法:

ALTER DATABASE ** CONNECTION LIMIT 300;

扩展:

  • 当然也可以要求开发申请连接资源降低,也可以缓解。
  • 通过结束 idle 会话治不了根本。kill掉之后会继续申请。
SELECT pg_terminate_backend(pid) FROM pg_stat_activity where state = 'idle';

__EOF__

本文作者lottu
本文链接https://www.cnblogs.com/lottu/p/14696437.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   lottu  阅读(3126)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
点击右上角即可分享
微信分享提示