From be6668d6eff6a03455b48fa8ce1a397ff5bae788 Mon Sep 17 00:00:00 2001
From: Heikki Linnakangas <heikki.linnakangas@iki.fi>
Date: Sat, 26 Feb 2011 23:36:24 +0200
Subject: [PATCH] Increase the default for wal_sender_delay from 200ms to 1s.
 Now that WAL sender is immediately woken up by transaction commit, there's no
 need to wake up so aggressively.

---
 doc/src/sgml/config.sgml                      | 7 +++++--
 src/backend/replication/walsender.c           | 2 +-
 src/backend/utils/misc/guc.c                  | 2 +-
 src/backend/utils/misc/postgresql.conf.sample | 2 +-
 4 files changed, 8 insertions(+), 5 deletions(-)

diff --git a/doc/src/sgml/config.sgml b/doc/src/sgml/config.sgml
index cee09c76815..46ffbff1087 100644
--- a/doc/src/sgml/config.sgml
+++ b/doc/src/sgml/config.sgml
@@ -1939,8 +1939,11 @@ SET ENABLE_SEQSCAN TO OFF;
         Specifies the delay between activity rounds for WAL sender processes.
         In each round the WAL sender sends any WAL accumulated since the last
         round to the standby server. It then sleeps for
-        <varname>wal_sender_delay</> milliseconds, and repeats. The default
-        value is 200 milliseconds (<literal>200ms</>).
+        <varname>wal_sender_delay</> milliseconds, and repeats. The sleep
+        is interrupted by transaction commit, so the effects of a committed
+        transaction are sent to standby servers as soon as the commit
+        happens, regardless of this setting. The default value is one second
+        (<literal>1s</>).
         Note that on many systems, the effective resolution of sleep delays is
         10 milliseconds; setting <varname>wal_sender_delay</> to a value that
         is not a multiple of 10 might have the same results as setting it to
diff --git a/src/backend/replication/walsender.c b/src/backend/replication/walsender.c
index eb99246e6d2..49b49d2a181 100644
--- a/src/backend/replication/walsender.c
+++ b/src/backend/replication/walsender.c
@@ -73,7 +73,7 @@ bool		am_walsender = false;		/* Am I a walsender process ? */
 
 /* User-settable parameters for walsender */
 int			max_wal_senders = 0;	/* the maximum number of concurrent walsenders */
-int			WalSndDelay = 200;	/* max sleep time between some actions */
+int			WalSndDelay = 1000;	/* max sleep time between some actions */
 
 /*
  * These variables are used similarly to openLogFile/Id/Seg/Off,
diff --git a/src/backend/utils/misc/guc.c b/src/backend/utils/misc/guc.c
index 55cbf757b49..529148a0405 100644
--- a/src/backend/utils/misc/guc.c
+++ b/src/backend/utils/misc/guc.c
@@ -1843,7 +1843,7 @@ static struct config_int ConfigureNamesInt[] =
 			GUC_UNIT_MS
 		},
 		&WalSndDelay,
-		200, 1, 10000, NULL, NULL
+		1000, 1, 10000, NULL, NULL
 	},
 
 	{
diff --git a/src/backend/utils/misc/postgresql.conf.sample b/src/backend/utils/misc/postgresql.conf.sample
index 6726733235b..6bfd0fd87c9 100644
--- a/src/backend/utils/misc/postgresql.conf.sample
+++ b/src/backend/utils/misc/postgresql.conf.sample
@@ -188,7 +188,7 @@
 
 #max_wal_senders = 0		# max number of walsender processes
 				# (change requires restart)
-#wal_sender_delay = 200ms	# walsender cycle time, 1-10000 milliseconds
+#wal_sender_delay = 1s		# walsender cycle time, 1-10000 milliseconds
 #wal_keep_segments = 0		# in logfile segments, 16MB each; 0 disables
 #vacuum_defer_cleanup_age = 0	# number of xacts by which cleanup is delayed
 
-- 
GitLab