mirror of
https://github.com/postgres/postgres.git
synced 2025-07-30 11:03:19 +03:00
Make stats_temp_directory PGC_SIGHUP, and document how it may cause a temporary
"outage" of the statistics views. This requires making the stats collector respond to SIGHUP, like the other utility processes already did.
This commit is contained in:
@ -1,4 +1,4 @@
|
|||||||
<!-- $PostgreSQL: pgsql/doc/src/sgml/config.sgml,v 1.187 2008/08/22 18:47:07 momjian Exp $ -->
|
<!-- $PostgreSQL: pgsql/doc/src/sgml/config.sgml,v 1.188 2008/08/25 15:11:00 mha Exp $ -->
|
||||||
|
|
||||||
<chapter Id="runtime-config">
|
<chapter Id="runtime-config">
|
||||||
<title>Server Configuration</title>
|
<title>Server Configuration</title>
|
||||||
@ -3418,7 +3418,9 @@ COPY postgres_log FROM '/full/path/to/logfile.csv' WITH csv;
|
|||||||
path relative to the data directory or an absolute path. The default is
|
path relative to the data directory or an absolute path. The default is
|
||||||
<filename>pg_stat_tmp</filename>. Pointing this at a RAM based filesystem
|
<filename>pg_stat_tmp</filename>. Pointing this at a RAM based filesystem
|
||||||
will decrease physical I/O requirements and can lead to increased
|
will decrease physical I/O requirements and can lead to increased
|
||||||
performance. This parameter can only be set at server start.
|
performance. If this parameter is changed when the system is running,
|
||||||
|
the statistics functions might return no information until a new
|
||||||
|
file has been written, which typically happens twice per second.
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
|
@ -13,7 +13,7 @@
|
|||||||
*
|
*
|
||||||
* Copyright (c) 2001-2008, PostgreSQL Global Development Group
|
* Copyright (c) 2001-2008, PostgreSQL Global Development Group
|
||||||
*
|
*
|
||||||
* $PostgreSQL: pgsql/src/backend/postmaster/pgstat.c,v 1.179 2008/08/15 08:37:39 mha Exp $
|
* $PostgreSQL: pgsql/src/backend/postmaster/pgstat.c,v 1.180 2008/08/25 15:11:00 mha Exp $
|
||||||
* ----------
|
* ----------
|
||||||
*/
|
*/
|
||||||
#include "postgres.h"
|
#include "postgres.h"
|
||||||
@ -203,6 +203,7 @@ static PgStat_GlobalStats globalStats;
|
|||||||
|
|
||||||
static volatile bool need_exit = false;
|
static volatile bool need_exit = false;
|
||||||
static volatile bool need_statwrite = false;
|
static volatile bool need_statwrite = false;
|
||||||
|
static volatile bool got_SIGHUP = false;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Total time charged to functions so far in the current backend.
|
* Total time charged to functions so far in the current backend.
|
||||||
@ -224,6 +225,7 @@ NON_EXEC_STATIC void PgstatCollectorMain(int argc, char *argv[]);
|
|||||||
static void pgstat_exit(SIGNAL_ARGS);
|
static void pgstat_exit(SIGNAL_ARGS);
|
||||||
static void force_statwrite(SIGNAL_ARGS);
|
static void force_statwrite(SIGNAL_ARGS);
|
||||||
static void pgstat_beshutdown_hook(int code, Datum arg);
|
static void pgstat_beshutdown_hook(int code, Datum arg);
|
||||||
|
static void pgstat_sighup_handler(SIGNAL_ARGS);
|
||||||
|
|
||||||
static PgStat_StatDBEntry *pgstat_get_db_entry(Oid databaseid, bool create);
|
static PgStat_StatDBEntry *pgstat_get_db_entry(Oid databaseid, bool create);
|
||||||
static void pgstat_write_statsfile(bool permanent);
|
static void pgstat_write_statsfile(bool permanent);
|
||||||
@ -2571,7 +2573,7 @@ PgstatCollectorMain(int argc, char *argv[])
|
|||||||
* Ignore all signals usually bound to some action in the postmaster,
|
* Ignore all signals usually bound to some action in the postmaster,
|
||||||
* except SIGQUIT and SIGALRM.
|
* except SIGQUIT and SIGALRM.
|
||||||
*/
|
*/
|
||||||
pqsignal(SIGHUP, SIG_IGN);
|
pqsignal(SIGHUP, pgstat_sighup_handler);
|
||||||
pqsignal(SIGINT, SIG_IGN);
|
pqsignal(SIGINT, SIG_IGN);
|
||||||
pqsignal(SIGTERM, SIG_IGN);
|
pqsignal(SIGTERM, SIG_IGN);
|
||||||
pqsignal(SIGQUIT, pgstat_exit);
|
pqsignal(SIGQUIT, pgstat_exit);
|
||||||
@ -2634,6 +2636,15 @@ PgstatCollectorMain(int argc, char *argv[])
|
|||||||
if (need_exit)
|
if (need_exit)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Reload configuration if we got SIGHUP from the postmaster.
|
||||||
|
*/
|
||||||
|
if (got_SIGHUP)
|
||||||
|
{
|
||||||
|
ProcessConfigFile(PGC_SIGHUP);
|
||||||
|
got_SIGHUP = false;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If time to write the stats file, do so. Note that the alarm
|
* If time to write the stats file, do so. Note that the alarm
|
||||||
* interrupt isn't re-enabled immediately, but only after we next
|
* interrupt isn't re-enabled immediately, but only after we next
|
||||||
@ -2834,6 +2845,13 @@ force_statwrite(SIGNAL_ARGS)
|
|||||||
need_statwrite = true;
|
need_statwrite = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* SIGHUP handler for collector process */
|
||||||
|
static void
|
||||||
|
pgstat_sighup_handler(SIGNAL_ARGS)
|
||||||
|
{
|
||||||
|
got_SIGHUP = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Lookup the hash table entry for the specified database. If no hash
|
* Lookup the hash table entry for the specified database. If no hash
|
||||||
|
@ -37,7 +37,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $PostgreSQL: pgsql/src/backend/postmaster/postmaster.c,v 1.561 2008/06/26 02:47:19 momjian Exp $
|
* $PostgreSQL: pgsql/src/backend/postmaster/postmaster.c,v 1.562 2008/08/25 15:11:01 mha Exp $
|
||||||
*
|
*
|
||||||
* NOTES
|
* NOTES
|
||||||
*
|
*
|
||||||
@ -1923,7 +1923,8 @@ SIGHUP_handler(SIGNAL_ARGS)
|
|||||||
signal_child(PgArchPID, SIGHUP);
|
signal_child(PgArchPID, SIGHUP);
|
||||||
if (SysLoggerPID != 0)
|
if (SysLoggerPID != 0)
|
||||||
signal_child(SysLoggerPID, SIGHUP);
|
signal_child(SysLoggerPID, SIGHUP);
|
||||||
/* PgStatPID does not currently need SIGHUP */
|
if (PgStatPID != 0)
|
||||||
|
signal_child(PgStatPID, SIGHUP);
|
||||||
|
|
||||||
/* Reload authentication config files too */
|
/* Reload authentication config files too */
|
||||||
load_hba();
|
load_hba();
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
* Written by Peter Eisentraut <peter_e@gmx.net>.
|
* Written by Peter Eisentraut <peter_e@gmx.net>.
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $PostgreSQL: pgsql/src/backend/utils/misc/guc.c,v 1.469 2008/08/22 18:47:07 momjian Exp $
|
* $PostgreSQL: pgsql/src/backend/utils/misc/guc.c,v 1.470 2008/08/25 15:11:00 mha Exp $
|
||||||
*
|
*
|
||||||
*--------------------------------------------------------------------
|
*--------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -2470,7 +2470,7 @@ static struct config_string ConfigureNamesString[] =
|
|||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
{"stats_temp_directory", PGC_POSTMASTER, STATS_COLLECTOR,
|
{"stats_temp_directory", PGC_SIGHUP, STATS_COLLECTOR,
|
||||||
gettext_noop("Writes temporary statistics files to the specified directory."),
|
gettext_noop("Writes temporary statistics files to the specified directory."),
|
||||||
NULL,
|
NULL,
|
||||||
GUC_SUPERUSER_ONLY
|
GUC_SUPERUSER_ONLY
|
||||||
|
Reference in New Issue
Block a user