From: | Edwin UY <edwin(dot)uy(at)gmail(dot)com> |
---|---|
To: | "pgsql-admin(at)lists(dot)postgresql(dot)org" <pgsql-admin(at)lists(dot)postgresql(dot)org> |
Subject: | How to check if session is a hung thread/session |
Date: | 2024-11-09 21:25:42 |
Message-ID: | CA+wokJ_QejkPWUym3njMQCkeFQ_kRcRdah5S2eseocwsHLc-4w@mail.gmail.com |
Views: | Whole Thread | Raw Message | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-admin |
Hi,
I am not sure how to explain this, but I believe this is something usually
referred to in the JDBC world as a hung thread.
This is an Aurora RDS PostgreSQL database that was patched in a supposed to
be zero downtime kind of thing.
After the patching, I have a user complaining that he has a job that
normally gets run in the OS cron session that has been failing.
When I check the database, it
=> SELECT pg_postmaster_start_time(),
-> pg_postmaster_start_time() at time zone 'utc' at time zone
'Pacific/Auckland' as "Pacific/Auckland TIMEZONE",
-> date_trunc( 'second', current_timestamp -
pg_postmaster_start_time() ) as uptime;
-[ RECORD 1 ]-------------+------------------------------
pg_postmaster_start_time | 2024-11-06 10:44:51.832663+00
Pacific/Auckland TIMEZONE | 2024-11-05 21:44:51.832663+00
uptime | 3 days 10:29:08
So, in theory it really wasn't zero downtime, not sure Aurora RDS takes
care of it but from the output above, it was re-started although
pg_stat_activity shows it is still there.
Checking pg_stat_activity
select pid as process_id,
usename as username,
datname as database_name,
client_addr as client_address,
application_name,
now() - pg_stat_activity.query_start AS duration,
backend_start,
backend_start at time zone 'Pacific/Auckland' as
backend_start_localtime,
state,
state_change,
state_change at time zone 'Pacific/Auckland' as
state_change_localtime
from pg_stat_activity
where usename = '[blah]'
order by username asc
I have the output as below:
process_id | username | database_name | client_address |
application_name | duration | backend_start |
backend_start_localtime | state | state_change |
state_change_localtime
------------+-----------+---------------+----------------+------------------------+-----------------+-------------------------------+----------------------------+-------+-------------------------------+----------------------------
31947 | [blah] | [blah] | [blah] | PostgreSQL JDBC Driver
| 00:47:21.838892 | 2024-11-06 10:44:53.309388+00 | 2024-11-06
23:44:53.309388 | idle | 2024-11-08 02:00:06.005173+00 | 2024-11-08
15:00:06.005173
(1 row)
From the pg_stat_output, the backend_start has not changed for several days
since the patching, so I am 'guessing' it may have gone lost/rogue already.
Is there any way to check that this is the case before I kill it.
The state_change date is getting updated though, I don't know if this is
proof that it is not a hung thread.
Any advice much appreciated. Thanks in advance.
Regards,
Ed
From | Date | Subject | |
---|---|---|---|
Next Message | Laurenz Albe | 2024-11-10 05:29:44 | Re: How to check if session is a hung thread/session |
Previous Message | Murthy Nunna | 2024-11-09 17:24:44 | RE: Running rsync backups in pg15 |