You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hawq.apache.org by yj...@apache.org on 2016/01/29 01:17:36 UTC
incubator-hawq git commit: HAWQ-367. Introduce seg_max_connections
guc to set segment max_connections setting
Repository: incubator-hawq
Updated Branches:
refs/heads/master 1df504f4f -> ff98f360b
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/master
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;