Thread: Add ps display while waiting for wal in read_local_xlog_page_guts
Hi,
pg_create_logical_replication_slot can take longer than usual on a standby when there is no activity on the primary. We don't have enough information in the pg_stat_activity or process title to debug why this is taking so long. Attached a small patch to update the process title while waiting for the wal in read_local_xlog_page_guts. Any thoughts on introducing a new wait event too?
For example, in my setup, slot creation took 8 minutes 13 seconds. It only succeeded after I ran select txid_current() on primary.
postgres=# select pg_create_logical_replication_slot('s1','test_decoding');
pg_create_logical_replication_slot
------------------------------------
(s1,0/C096D10)
(1 row)
Time: 493365.995 ms (08:13.366)
pg_create_logical_replication_slot
------------------------------------
(s1,0/C096D10)
(1 row)
Time: 493365.995 ms (08:13.366)
Thanks,
Sirisha
Attachment
sirisha chamarthi <sirichamarthi22@gmail.com> writes: > pg_create_logical_replication_slot can take longer than usual on a standby > when there is no activity on the primary. We don't have enough information > in the pg_stat_activity or process title to debug why this is taking so > long. Attached a small patch to update the process title while waiting for > the wal in read_local_xlog_page_guts. Any thoughts on introducing a new > wait event too? set_ps_display is a fairly expensive operation on a lot of platforms, so I'm concerned about the overhead this proposal would add. However, getting rid of that pg_usleep in favor of a proper wait event seems like a good idea. regards, tom lane
Re: Add ps display while waiting for wal in read_local_xlog_page_guts
From
"Drouvot, Bertrand"
Date:
Hi, On 4/13/23 12:43 AM, sirisha chamarthi wrote: > Hi, > > pg_create_logical_replication_slot can take longer than usual on a standby when there is no activity on the primary. Wedon't have enough information in the pg_stat_activity or process title to debug why this is taking so long. Attached asmall patch to update the process title while waiting for the wal in read_local_xlog_page_guts. Any thoughts on introducinga new wait event too? > > For example, in my setup, slot creation took 8 minutes 13 seconds. It only succeeded after I ran select txid_current()on primary. FWIW, this behavior has been mentioned in 0fdab27ad6 and a new function (pg_log_standby_snapshot()) has been created/documentedto accelerate the slot creation on the standby. Regards, -- Bertrand Drouvot PostgreSQL Contributors Team RDS Open Source Databases Amazon Web Services: https://aws.amazon.com
Re: Add ps display while waiting for wal in read_local_xlog_page_guts
From
"Drouvot, Bertrand"
Date:
Hi, On 4/13/23 4:29 AM, Tom Lane wrote: > sirisha chamarthi <sirichamarthi22@gmail.com> writes: >> pg_create_logical_replication_slot can take longer than usual on a standby >> when there is no activity on the primary. We don't have enough information >> in the pg_stat_activity or process title to debug why this is taking so >> long. Attached a small patch to update the process title while waiting for >> the wal in read_local_xlog_page_guts. Thanks for the patch! > Any thoughts on introducing a new >> wait event too? > > set_ps_display is a fairly expensive operation on a lot of platforms, > so I'm concerned about the overhead this proposal would add. However, > getting rid of that pg_usleep in favor of a proper wait event seems > like a good idea. > +1 for adding a proper wait event. Regards, -- Bertrand Drouvot PostgreSQL Contributors Team RDS Open Source Databases Amazon Web Services: https://aws.amazon.com