Old active connections?

Started by Hans Sebastianalmost 8 years ago4 messagesgeneral
Jump to latest
#1Hans Sebastian
hnsbstn@gmail.com

Hello group,

We run postgresql 10.3 for a python django app with gunicorn on nginx with
django version 1.9.5.

Recently, we started noticing there are many active connections from the
django app server that are more than 1 week old still showing in
pg_stat_activity.

Even though the django server has been stopped (all processes killed), the
active connections still persist. All of these connections are UPDATE
queries that look pretty normal.

Does anyone know the reasons they could be there? What could have caused
them being still active?

This has become an issue as we started getting "FATAL: remaining
connection slots are reserved for non-replication superuser connections"

Thanks,
-hans

#2Adrian Klaver
adrian.klaver@aklaver.com
In reply to: Hans Sebastian (#1)
Re: Old active connections?

On 04/17/2018 05:02 PM, Hans Sebastian wrote:

Hello group,

We run postgresql 10.3 for a python django app with gunicorn on nginx
with django version 1.9.5.

Recently, we started noticing there are many active connections from the
django app server that are more than 1 week old still showing in
pg_stat_activity.

Even though the django server has been stopped (all processes killed),
the active connections still persist. All of these connections are
UPDATE queries that look pretty normal.

Are sure they are coming from Django?

Does anyone know the reasons they could be there? What could have caused
them being still active?

Can we see the data from pg_stat_activity for those queries?

This has become an issue as we started getting "FATAL:  remaining
connection slots are reserved for non-replication superuser connections"

Thanks,
-hans

--
Adrian Klaver
adrian.klaver@aklaver.com

#3David G. Johnston
david.g.johnston@gmail.com
In reply to: Hans Sebastian (#1)
Re: Old active connections?

On Tue, Apr 17, 2018 at 5:02 PM, Hans Sebastian <hnsbstn@gmail.com> wrote:

Hello group,

We run postgresql 10.3 for a python django app with gunicorn on nginx with
django version 1.9.5.​

Recently, we started noticing there are many active connections from the
django app server that are more than 1 week old still showing in
pg_stat_activity.

​There are quite a few timestamp columns, and a state field, in that view -
you should show some example records instead of leaving people to guess
whether you are presenting an accurate interpretation of the data.

Even though the django server has been stopped (all processes killed), the

active connections still persist. All of these connections are UPDATE
queries that look pretty normal.

Does anyone know the reasons they could be there? What could have caused
them being still active?

This has become an issue as we started getting "FATAL: remaining
connection slots are reserved for non-replication superuser connections"

​Some live process somewhere seems to be keeping an open session with the
PostgreSQL service...

Long-lived non-idle statements would likely be waiting for a lock to be
released.

David J.

#4Michael Paquier
michael@paquier.xyz
In reply to: David G. Johnston (#3)
Re: Old active connections?

On Tue, Apr 17, 2018 at 05:11:10PM -0700, David G. Johnston wrote:

Long-lived non-idle statements would likely be waiting for a lock to be
released.

Be very careful with transactions marked as "idle in transaction" for a
long time. Long-running transactions prevent VACUUM to do its work as
the oldest XID in view is not updated, causing performance to go down,
and bloat to go up.
--
Michael