postgresql 链接数过多问题

解决问题的关键首先是找到问题的根源,因此首先需要知道当前数据库的配置,和当前的链接信息!

查询当前数据库设置的最大链接数 :

show max_connections;

查询当前数据库正在使用的链接数:

select count(1) from pg_stat_activity;

查询链接当前数据库客户端的链接数:(按照客户端地址查询)

select count(*) , a.client_addr from  pg_stat_activity a
group by a.client_addr

查询空闲链接数:(如果空闲链接数过多,肯定有问题,可以再根据客户端查询哪些客户端的空闲链接过多,最可能的情况是数据库链接池配置的有问题)

select count(*) from pg_stat_activity where state='idle';

注 :state:运行状态,有如下几种:active:正在执行查询;idle:等待新的命令;idle in transaction:后端是一个事务,但是尚未执行查询;idle in transaction(aborted):和idle in transaction类似,除了事务执行出错。

具体的数据库连接状态可以参考这个博客 PostgreSQL系统表 pg_stat_activity 这位仁兄介绍的挺全面了。

猜你喜欢

转载自blog.csdn.net/qq_26462567/article/details/84243328