You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hawq.apache.org by od...@apache.org on 2016/01/29 04:20:17 UTC

[4/6] incubator-hawq git commit: HAWQ-367. Introduce seg_max_connections guc to set segment max_connections setting

HAWQ-367. Introduce seg_max_connections guc to set segment max_connections setting


Project: http://git-wip-us.apache.org/repos/asf/incubator-hawq/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-hawq/commit/ff98f360
Tree: http://git-wip-us.apache.org/repos/asf/incubator-hawq/tree/ff98f360
Diff: http://git-wip-us.apache.org/repos/asf/incubator-hawq/diff/ff98f360

Branch: refs/heads/HAWQ-369
Commit: ff98f360b2b6c12fb07e7d200c1ab772dcaf80c7
Parents: 1df504f
Author: YI JIN <yj...@pivotal.io>
Authored: Fri Jan 29 11:17:22 2016 +1100
Committer: YI JIN <yj...@pivotal.io>
Committed: Fri Jan 29 11:17:22 2016 +1100

----------------------------------------------------------------------
 src/backend/postmaster/postmaster.c | 15 +++++++++++++++
 src/backend/tcop/postgres.c         | 15 ++++++++++++++-
 src/backend/utils/init/globals.c    |  1 +
 src/backend/utils/misc/guc.c        | 14 ++++++++++++++
 src/include/miscadmin.h             |  1 +
 5 files changed, 45 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/ff98f360/src/backend/postmaster/postmaster.c
----------------------------------------------------------------------
diff --git a/src/backend/postmaster/postmaster.c b/src/backend/postmaster/postmaster.c
index bc71d97..f15a6eb 100644
--- a/src/backend/postmaster/postmaster.c
+++ b/src/backend/postmaster/postmaster.c
@@ -1071,9 +1071,24 @@ PostmasterMain(int argc, char *argv[])
 	 * postgresql.conf for the first time.
 	 */
 	if (!SelectConfigFiles(userDoption, progname))
+
 		ExitPostmaster(2);
 
 	/*
+	 * Overwrite MaxBackends in case it is a segment.
+	 */
+	if ( !AmIMaster() && !IsUnderPostmaster)
+	{
+		char segmaxconns[32];
+		elog(LOG, "Update segment max_connections to %d", SegMaxBackends);
+		snprintf(segmaxconns, sizeof(segmaxconns), "%d", SegMaxBackends);
+		SetConfigOption("max_connections",
+						segmaxconns,
+						PGC_POSTMASTER,
+						PGC_S_OVERRIDE);
+	}
+
+	/*
 	 * CDB/MPP/GPDB: Set the processor affinity (may be a no-op on
 	 * some platforms). The port number is nice to use because we know
 	 * that different segments on a single host will not have the same

http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/ff98f360/src/backend/tcop/postgres.c
----------------------------------------------------------------------
diff --git a/src/backend/tcop/postgres.c b/src/backend/tcop/postgres.c
index 4d3dfe3..71c4c2a 100644
--- a/src/backend/tcop/postgres.c
+++ b/src/backend/tcop/postgres.c
@@ -3763,7 +3763,6 @@ PostgresMain(int argc, char *argv[], const char *username)
 	volatile bool send_ready_for_query = true;
 	int			topErrCode;
 
-
 	MemoryAccount *postgresMainMemoryAccount = NULL;
 
     /*
@@ -4145,6 +4144,20 @@ PostgresMain(int argc, char *argv[], const char *username)
 	    PgStartTime = GetCurrentTimestamp();
 	}
 
+	/*
+	 * Overwrite MaxBackends in case it is a segment.
+	 */
+	if ( !AmIMaster() && !IsUnderPostmaster)
+	{
+		char segmaxconns[32];
+		elog(LOG, "Update segment max_connections to %d", SegMaxBackends);
+		snprintf(segmaxconns, sizeof(segmaxconns), "%d", SegMaxBackends);
+		SetConfigOption("max_connections",
+						segmaxconns,
+						PGC_POSTMASTER,
+						PGC_S_OVERRIDE);
+	}
+
 	if (PostAuthDelay)
 		pg_usleep(PostAuthDelay * 1000000L);
 

http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/ff98f360/src/backend/utils/init/globals.c
----------------------------------------------------------------------
diff --git a/src/backend/utils/init/globals.c b/src/backend/utils/init/globals.c
index bd069cf..a7202ae 100644
--- a/src/backend/utils/init/globals.c
+++ b/src/backend/utils/init/globals.c
@@ -116,6 +116,7 @@ int			maintenance_work_mem = 65536;
 /* Primary determinants of sizes of shared-memory structures: */
 int			NBuffers = 4096;
 int			MaxBackends = 200;
+int			SegMaxBackends = 4800;
 
 int			gp_workfile_max_entries = 8192; /* Number of unique entries we can hold in the workfile directory */
 

http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/ff98f360/src/backend/utils/misc/guc.c
----------------------------------------------------------------------
diff --git a/src/backend/utils/misc/guc.c b/src/backend/utils/misc/guc.c
index 845bfdc..ceb378c 100644
--- a/src/backend/utils/misc/guc.c
+++ b/src/backend/utils/misc/guc.c
@@ -4617,6 +4617,20 @@ static struct config_int ConfigureNamesInt[] =
 		200, 10, MAX_MAX_BACKENDS, NULL, NULL
 	},
 
+	/*
+	 * When HAWQ has one master and one segment deployed together in one physical
+	 * machine, we can not separately set different max connection count. Thus,
+	 * we introduce this guc for segment setting only.
+	 */
+	{
+		{"seg_max_connections", PGC_POSTMASTER, CONN_AUTH_SETTINGS,
+			gettext_noop("Sets the maximum number of concurrent connections in a segment."),
+			NULL
+		},
+		&SegMaxBackends,
+		4800, 240, MAX_MAX_BACKENDS, NULL, NULL
+	},
+
 	{
 		{"superuser_reserved_connections", PGC_POSTMASTER, CONN_AUTH_SETTINGS,
 			gettext_noop("Sets the number of connection slots reserved for superusers."),

http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/ff98f360/src/include/miscadmin.h
----------------------------------------------------------------------
diff --git a/src/include/miscadmin.h b/src/include/miscadmin.h
index 23be5f1..b52485c 100644
--- a/src/include/miscadmin.h
+++ b/src/include/miscadmin.h
@@ -194,6 +194,7 @@ extern PGDLLIMPORT char *DataDir;
 
 extern PGDLLIMPORT int NBuffers;
 extern int	MaxBackends;
+extern int	SegMaxBackends;
 extern int	MaxConnections;
 extern int gp_workfile_max_entries;
 extern int gp_mdver_max_entries;