mirror of
https://github.com/postgres/postgres.git
synced 2025-12-21 05:21:08 +03:00
Add connection establishment duration logging
Add log_connections option 'setup_durations' which logs durations of several key parts of connection establishment and backend setup. For an incoming connection, starting from when the postmaster gets a socket from accept() and ending when the forked child backend is first ready for query, there are multiple steps that could each take longer than expected due to external factors. This logging provides visibility into authentication and fork duration as well as the end-to-end connection establishment and backend initialization time. To make this portable, the timings captured in the postmaster (socket creation time, fork initiation time) are passed through the BackendStartupData. Author: Melanie Plageman <melanieplageman@gmail.com> Reviewed-by: Bertrand Drouvot <bertranddrouvot.pg@gmail.com> Reviewed-by: Fujii Masao <masao.fujii@oss.nttdata.com> Reviewed-by: Daniel Gustafsson <daniel@yesql.se> Reviewed-by: Jacob Champion <jacob.champion@enterprisedb.com> Reviewed-by: Jelte Fennema-Nio <postgres@jeltef.nl> Reviewed-by: Guillaume Lelarge <guillaume.lelarge@dalibo.com> Discussion: https://postgr.es/m/flat/CAAKRu_b_smAHK0ZjrnL5GRxnAVWujEXQWpLXYzGbmpcZd3nLYw%40mail.gmail.com
This commit is contained in:
@@ -77,8 +77,22 @@ $node->start;
|
||||
# other tests are added to this file in the future
|
||||
$node->safe_psql('postgres', "CREATE DATABASE test_log_connections");
|
||||
|
||||
my $log_connections = $node->safe_psql('test_log_connections', q(SHOW log_connections;));
|
||||
is($log_connections, 'on', qq(check log connections has expected value 'on'));
|
||||
|
||||
$node->connect_ok('test_log_connections',
|
||||
qq(log_connections 'on' works as expected for backwards compatibility),
|
||||
log_like => [
|
||||
qr/connection received/,
|
||||
qr/connection authenticated/,
|
||||
qr/connection authorized: user=\S+ database=test_log_connections/,
|
||||
],
|
||||
log_unlike => [
|
||||
qr/connection ready/,
|
||||
],);
|
||||
|
||||
$node->safe_psql('test_log_connections',
|
||||
q[ALTER SYSTEM SET log_connections = receipt,authorization;
|
||||
q[ALTER SYSTEM SET log_connections = receipt,authorization,setup_durations;
|
||||
SELECT pg_reload_conf();]);
|
||||
|
||||
$node->connect_ok('test_log_connections',
|
||||
@@ -86,6 +100,7 @@ $node->connect_ok('test_log_connections',
|
||||
log_like => [
|
||||
qr/connection received/,
|
||||
qr/connection authorized: user=\S+ database=test_log_connections/,
|
||||
qr/connection ready/,
|
||||
],
|
||||
log_unlike => [
|
||||
qr/connection authenticated/,
|
||||
@@ -100,6 +115,7 @@ $node->connect_ok('test_log_connections',
|
||||
qr/connection received/,
|
||||
qr/connection authenticated/,
|
||||
qr/connection authorized: user=\S+ database=test_log_connections/,
|
||||
qr/connection ready/,
|
||||
],);
|
||||
|
||||
# Authentication tests
|
||||
|
||||
Reference in New Issue
Block a user