Hello,

Le lun. 16 déc. 2024 à 22:00, Melanie Plageman <melanieplage...@gmail.com>
a écrit :

> Hi,
>
> Users wishing to debug slow connection establishment have little
> visibility into which steps take the most time. We don't expose any
> stats and none of the logging includes durations.
>
> The attached patch logs durations for authentication, forking the
> Postgres backend, and the end-to-end connection establishment duration
> starting from when the postmaster calls accept() and ending the first
> time the forked backend is ready for query.
>
> As an example of how this could be useful, I artificially slowed down
> authentication and you can see that that is now visible in logs:
>
> LOG:  backend ready for query. pid=86341. socket=10. connection
> establishment times (ms): total: 8, fork: 0, authentication: 0
> LOG:  backend ready for query. pid=86794. socket=10. connection
> establishment times (ms): total: 108, fork: 0, authentication: 100
>
> Two notes on implementation:
>
> To make this portable, the timestamps captured in the postmaster
> (socket creation time, fork initiation time) are passed through the
> ClientSocket and BackendStartupData structures instead of simply saved
> in backend local memory inherited by the child process.
>
> Secondly, I used TimestampTz for the times, but it is pretty unclear
> to me when instr_time should be used vs TimestampTz for such things.
> instr_time says it is more portable, but there are all sorts of places
> that use TimestampTz that would probably need to be portable.
> Also, INSTR_TIME_SUBTRACT() isn't overflow safe, which must be because
> the actual data type of ticks is platform dependent and so the caller
> is responsible for not passing it values that would overflow when
> subtracted.
>
>
Just a quick note. I like this patch a lot and it would help to diagnose
some situations our customers may have. I tried the patch on my laptop, and
it works fine. I'll find some time to read the code as well, but in the
meantime, this looks like a nice thing to have in PostgreSQL.

Thanks Melanie.


-- 
Guillaume.

Reply via email to