From: | Rajesh Kumar <rajeshkumar(dot)dba09(at)gmail(dot)com> |
---|---|
To: | Laurenz Albe <laurenz(dot)albe(at)cybertec(dot)at> |
Cc: | Pgsql-admin <pgsql-admin(at)lists(dot)postgresql(dot)org> |
Subject: | Re: Connection hike |
Date: | 2024-03-13 12:59:50 |
Message-ID: | CAJk5AtYRzxaLHTwUCMTxPa1iy4TAfR0hrXKDS+cwdGA-6gRTgQ@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-admin |
I use one single query that gets all, there were times connections are
high, but no blocking query or long running query 90% like that only.
Is this query enough
select ((total - idle) - idle_in_txn) as active
, total
, idle
, idle_in_txn
, (select coalesce(extract(epoch from (max(clock_timestamp() -
state_change))),0) from pg_catalog.pg_stat_activity where state = 'idle in
transaction') as max_idle_in_txn_time
, (select coalesce(extract(epoch from (max(clock_timestamp() -
query_start))),0) from pg_catalog.pg_stat_activity where backend_type =
'client backend' and state <> 'idle' ) as max_query_time
, (select coalesce(extract(epoch from (max(clock_timestamp() -
query_start))),0) from pg_catalog.pg_stat_activity where backend_type =
'client backend' and wait_event_type = 'Lock' ) as max_blocked_query_time
, max_connections
from (
select count(*) as total
, coalesce(sum(case when state = 'idle' then 1 else
0 end),0) as idle
, coalesce(sum(case when state = 'idle in
transaction' then 1 else 0 end),0) as idle_in_txn from
pg_catalog.pg_stat_activity) x
join (select setting::float AS max_connections FROM pg_settings
WHERE name = 'max_connections') xx ON (true);
On Wed, 13 Mar 2024, 18:26 Laurenz Albe, <laurenz(dot)albe(at)cybertec(dot)at> wrote:
> On Wed, 2024-03-13 at 18:14 +0530, Rajesh Kumar wrote:
> > There were connections hike and I used to check blocking sessions and
> long
> > running queries using pg_stat_activity.
> >
> > My manager gave me less rating during performance meeting, because he
> says
> > even a kid can do this. He said my job is to analyse the cause of
> connection hike.
> >
> > Any idea how to analyse?
>
> I assume that you mean "hang", not "hike".
>
> You can diagnose locked sessions fron the "wait_event" and
> "wait_event_type" in
> "pg_stat_activity". For the process ID of a blocked session, you can call
> the
> "pg_blocking_pids()" function to get the process IDs of the sessions
> blocking it.
>
> You can look at "pg_locks" to see on which object the lock is (a lock
> waiting
> for a transaction is waiting for a row lock).
>
> That's about all you can analyze in the database. To figure out which
> statements
> took the locks that block others, you'd have to debug the application.
>
> Yours,
> Laurenz Albe
>
From | Date | Subject | |
---|---|---|---|
Next Message | Rajesh Kumar | 2024-03-13 13:02:39 | Re: Connection hike |
Previous Message | Laurenz Albe | 2024-03-13 12:56:08 | Re: Connection hike |