Re: Question on session timeout - Mailing list pgsql-general

From Adrian Klaver
Subject Re: Question on session timeout
Date
Msg-id 531a5550-dee1-4659-a2b8-45ad52fe7e11@aklaver.com
Whole thread Raw
In response to Re: Question on session timeout  (sud <suds1434@gmail.com>)
List pgsql-general
On 9/30/24 22:57, sud wrote:
> 
> 
> On Tue, Oct 1, 2024 at 4:10 AM Adrian Klaver <adrian.klaver@aklaver.com 
> <mailto:adrian.klaver@aklaver.com>> wrote:

> /Where are you getting the ~2000  count from?/
> Seeing this in the "performance insights" dashboard and also its 
> matching when I query the count of sessions from pg_stat_activity.

 From your OP:

"... whereas the total number of active sessions in pg_stat_activity 
staying <100 at any point in time."

So:

1) They don't match.

2) ""performance insights" dashboard" does not actually tell us 
anything. What program and what is it actually measuring?

> 
> /What do you mean by ~120 sets, in particular what is a set?
> /These are the values set as mentioned in the properties file which the 
> application team uses for connection pooling

Again this does not tell us anything.

1) A set of what?

2) What properties file?

> 
> /Using what pooler?
> /I need to check on this as Its Java application(jdbc driver for 
> connecting to DB), so I thought it must be using standard connection 
> pooling. Will double check.

Since pooling is what you are concerned with this is should be the 
starting point of your investigation.

> 
> /How often do to keep alive queries run?
> /Need to check. But I am not sure, in general , if these "keep alive" 
> queries are used for keeping a transaction alive or a session alive?

With an idle_in_transaction_session_timeout of 24 hrs I don't see that 
it makes a difference.

> 
> As you described, a long time open transaction with a session state as 
> "idle" will be threatening as that will cause locking and "transaction 

That would be idle_in_transaction.

> ID wrap around" issues to surface whereas having "idle sessions" of a 
> closed transaction may not cause any issue as they will do no harm. Does 
> it mean we can have any number of idle sessions or we should also have 
> some non zero "timeout" setup for the "ide_session_timeout" parameter 
> too (maybe ~1hr or so)?

Other then it takes up connections.

> 
> Is it correct to assume the session in pg_stat_activity with very old 
> XACT_START are the one which are part of long running open 
> transaction(i.e. driven by idle_in_transaction_session_timeout) whereas 
> the ones with older BACKEND_START or QUERY_START are the one are just 
> the idle session(driven by idle_session_timeout) but not tied to any 
> open transaction?

I would read this descriptions here:

https://www.postgresql.org/docs/current/monitoring-stats.html#MONITORING-PG-STAT-ACTIVITY-VIEW


> 
> Few observations:-
> 
> I do see, "MaximumUsedTransactionIDs" staying consistently ~200M for a 
> long time then coming down. And its matching to 
> "autovacuum_freeze_max_age" which is set as 200M. Hope it's expected. We 
> have max_connections set as 5000.
> 
> "Database connection" touching ~2000 then coming down till 200. And we 
> see uneven spikes in those, it seems to be matching with the pattern , 
> when we have some errors occurring during the insert queries which are 
> submitted by the Java application to insert the data into the tables.
> 

This would have been a good thing to lead with.

-- 
Adrian Klaver
adrian.klaver@aklaver.com




pgsql-general by date:

Previous
From: Greg Sabino Mullane
Date:
Subject: Re: Question on session timeout
Next
From: Adrian Klaver
Date:
Subject: Re: Reading execution plan - first row time vs last row time